COMPUTE mit IF kombinieren?

Alles rund um SPSS Syntax und Programmierung.

COMPUTE mit IF kombinieren?

Beitragvon fsabrina » Mi 19. Dez 2018, 13:26

Hallo liebe Statistik-Freund*innen,

ich habe einen Datensatz mit Studierenden, die jeweils 5 Fächer angeben können (fach1, fach2, fach3, fach4, fach5).
Beispiel-Studi1 hat in fach1=Deutsch in fach2=Mathe in fach3=Geschichte
Beispiel-Studi2 hat in fach1=Kunst in fach2=Deutsch in fach3=Musik in fach4=Philosophie
Beispiel-Studi3 hat in fach1=Sport in fach2=Pädagogik
Beispiel-Studi4 hat in fach1=Deutsch in fach2=Englisch in fach3=Biologie
Die Reihenfolge der Fächer, ob es im 1. Fach, 2. Fach oder 3. Fach etc. studiert, ist mir dabei egal.

Ich hätte jetzt allerdings gern die Auszählungen, sodass ich die Fächer und die Fächerkombinationen errechnen kann. Wichtig dabei ist mir eine Kategorie "Rest", die all jene Fächer sind, die mich nicht interessieren (Deutsch, Mathe, Englisch, Biologie, Physik, LBsprach, LBmath interessieren mich; dafür habe ich bereits neu berechnet "COMPUTE Deutsch=fach1=3 or fach2=3 or fach3=3 or fach4=3 or fach5=3." oder "COMPUTE Mathe=fach1=13 or fach2=13 or fach3=13 or fach4=13 or fach5=13." etc.).
"Rest" wollte ich als Variable neu berechnen, verzweifle aber an der Syntax.
Beispiel-Studi1 müsste in "Rest" eingeteilt werden, da er auch Geschichte studiert
Beispiel-Studi2 müsste in "Rest" eingeteilt werden, da er auch Kunst, Musik und Philosophie studiert
Beispiel-Studi3 müsste in "Rest" eingeteilt werden, da er ausschließlich für mich nicht relevante Fächer studiert
Beispiel-Studi4 dürfte nicht in "Rest" eingeteilt (bzw. hier mit = kodiert) werden, da er ausschließlich für mich relevante Fächer studiert

Meine Idee ist es einen COMPUTE-Befehlt zugleich mit einem IF-Befehl zu kombinieren; aber bisher hat es nicht geklappt. Oder gibt es da eine andere Möglichkeit?

Hier mein bisheriger Versuch:

COMPUTE Rest.
IF(Deutsch=1 or Mathe=1 or Englisch=1 or Biologie=1 or Physik=1 or LBsprach=1 or LBmath=1) and (fach1=2 or fach1=5 or fach1=6 or fach1=7 or fach1=9 or fach1=10 or fach1=11 or fach1=12 or
fach1=14 or fach1=15 or fach1=17 or fach1=18 or fach1=19 or fach1=20 or fach1=21 or fach1=22 or fach1=23 or fach1=24 or
fach1=25 or fach1=26 or fach1=30 or fach1=32 or fach1=40 or fach1=41 or fach1=42 or fach1=43 or fach1=44 or fach1=45 or fach1=51) Rest=1.
EXECUTE.

Bin euch dankbar um jede Hilfe!

Schöne Grüße
Sabrina
fsabrina
 
Beiträge: 24
Registriert: Mi 14. Mai 2014, 09:39
Danke gegeben: 1
Danke bekommen: 0 mal in 0 Post

Re: COMPUTE mit IF kombinieren?

Beitragvon ponderstibbons » Mi 19. Dez 2018, 14:13

Meine Idee ist es einen COMPUTE-Befehlt zugleich mit einem IF-Befehl zu kombinieren; aber bisher hat es nicht geklappt.

Was meinst Du mit "hat nicht geklappt"? Der Rechner hat sich aufgehängt? Der Befehl wurde
nicht ausgeführt und es ergab sich eine Fehlermeldung? Die neue Variable sieht anders aus
als erwartet?

Hier mein bisheriger Versuch:

Der Gesamte Ausdruck nach IF muss jedenfalls in eine weitere Klammer.:
IF( (Deutsch=1 ... ... ... or fach1=51) ) Rest = 1.

Mit freundlichen Grüßen

PonderStibbons
ponderstibbons
 
Beiträge: 2472
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 1
Danke bekommen: 255 mal in 254 Posts

Re: COMPUTE mit IF kombinieren?

Beitragvon fsabrina » Do 20. Dez 2018, 13:03

ponderstibbons hat geschrieben:
Der Befehl wurde nicht ausgeführt und es ergab sich eine Fehlermeldung?

Ja genau. Ich bekam folgende Fehlermeldung:

COMPUTE Rest.
>Fehlernummer 4382 in Spalte 1024. Text: (Ende des Befehls)
>Nach einer Zielvariablen in einem Befehl COMPUTE wurde ein Gleichheitszeichen
>erwartet, aber nicht gefunden.
>Die Ausführung dieses Befehls wurde gestoppt.
IF(Deutsch=1 or Mathe=1 or Englisch=1 or Biologie=1 or Physik=1 or LBsprach=1 or LBmath=1) and (fach1=2 or fach1=5 or fach1=6 or fach1=7 or fach1=9 or fach1=10 or fach1=11 or fach1=12 or
fach1=14 or fach1=15 or fach1=17 or fach1=18 or fach1=19 or fach1=20 or fach1=21 or fach1=22 or fach1=23 or fach1=24 or
fach1=25 or fach1=26 or fach1=30 or fach1=32 or fach1=40 or fach1=41 or fach1=42 or fach1=43 or fach1=44 or fach1=45 or fach1=51) Rest=1.
EXECUTE.

Muss ich eventuell "COMPUTE Rest=1" setzen, und dann erst die Bedingung erläutern?

ponderstibbons hat geschrieben:
Der Gesamte Ausdruck nach IF muss jedenfalls in eine weitere Klammer.:
IF( (Deutsch=1 ... ... ... or fach1=51) ) Rest = 1.


Bin dankbar, wenn nochmal jemand Zeit für Tipps hat.
VG Sabrina
fsabrina
 
Beiträge: 24
Registriert: Mi 14. Mai 2014, 09:39
Danke gegeben: 1
Danke bekommen: 0 mal in 0 Post

Re: COMPUTE mit IF kombinieren?

Beitragvon ponderstibbons » Do 20. Dez 2018, 15:37

Ja, das war unvollständig. Richtig wäre
COMPUTE rest=0.
EXECUTE.

Aber eigentlich war die Frage, wie Fehlermeldung im ursprünglichen Versuch lautete.

Und mittlerweile zusätzlich, ob Du die fehlende äußere Klammer gesetzt hast und was dann herauskam.


Mit freundlichen Grüßen

PonderStibbons
ponderstibbons
 
Beiträge: 2472
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 1
Danke bekommen: 255 mal in 254 Posts

Re: COMPUTE mit IF kombinieren?

Beitragvon fsabrina » Mi 9. Jan 2019, 12:48

Hi,
ja die Klammern habe ich gesetzt, diesmal keine Fehlermeldung mehr - vielen Dank schon an der Stelle.
Aber die Auszählung passt dennoch leider nicht auf den Output, den ich gerne mit der Variable Rest hätte.
Wenn ein Student eines der 7 relevanten Fächer studiert (d.h. mit 1 kodiert), dann gehört er nicht in die "Rest"-Kategorie (Rest=0), wenn er aber keines der 7 Fächer studiert, dann gehört er in die "Rest"-Kategorie (Rest=1). Ich kann das ganze auch einfach per Hand kodieren, das ist mir bewusst, aber ich möchte es gern für zukünftige Studien mit der Syntax ökonomisch replizierbar machen. und ich benötige die Rest-Varibale auch zuverlässig, um dann weiter zu rechnen.

Erkennt jemand den Fehler in meiner Syntax?

Hier mein aktuellster Versuch:
COMPUTE Rest=0.
IF((Deutsch=1 or Mathe=1 or Englisch=1 or Biologie=1 or Physik=1 or LBsprach=1 or LBmath=1) and (fach1=2 or fach1=5 or fach1=6 or fach1=7 or fach1=9 or fach1=10 or fach1=11 or fach1=12 or
fach1=14 or fach1=15 or fach1=17 or fach1=18 or fach1=19 or fach1=20 or fach1=21 or fach1=22 or fach1=23 or fach1=24 or
fach1=25 or fach1=26 or fach1=30 or fach1=32 or fach1=40 or fach1=41 or fach1=42 or fach1=43 or fach1=44 or fach1=45 or fach1=51)) Rest=1.
EXECUTE.

Hier wurde leider alles auf 0 gesetzt in "Rest", obwohl es viele Studenten gibt, die mindestens 1 der 7 relevanten Fächer studieren)
Zuvor habe ich nur eine Auswahl getroffen:
COMPUTE Deutsch=fach1=3 or fach2=3 or fach3=3 or fach4=3 or fach5=3.
COMPUTE Mathe=fach1=13 or fach2=13 or fach3=13 or fach4=13 or fach5=13.
COMPUTE Englisch=fach1=4 or fach2=4 or fach3=4 or fach4=4 or fach5=4.
COMPUTE Biologie=fach1=1 or fach2=1 or fach3=1 or fach4=1 or fach5=1.
COMPUTE Physik=fach1=16 or fach2=16 or fach3=16 or fach4=16 or fach5=16.
COMPUTE LBsprach=fach1=33 or fach2=33 or fach3=33 or fach4=33 or fach5=33.
COMPUTE LBmath=fach1=31 or fach2=31 or fach3=31 or fach4=31 or fach5=31.
COMPUTE Rest=0.
IF(Deutsch=0 and Mathe=0 and Englisch=0 and Biologie=0 and Physik=0 and LBsprach=0 and LBmath=0) Rest=1.
EXECUTE.



Oder denke ich zu kompliziert? Aber auch simpel das habe ich probiert:
COMPUTE Rest=0.
IF(Deutsch=0 and Mathe=0 and Englisch=0 and Biologie=0 and Physik=0 and LBsprach=0 and LBmath=0) Rest=1.
EXECUTE.
Hier wir leider auch alles auf 0 gesetzt.
fsabrina
 
Beiträge: 24
Registriert: Mi 14. Mai 2014, 09:39
Danke gegeben: 1
Danke bekommen: 0 mal in 0 Post

Re: COMPUTE mit IF kombinieren?

Beitragvon strukturmarionette » Mi 9. Jan 2019, 17:35

Hi,

- welche (SPSS-)Variablentypen liegen vor?

Gruß
S.
strukturmarionette
 
Beiträge: 2449
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 7
Danke bekommen: 122 mal in 122 Posts

Re: COMPUTE mit IF kombinieren?

Beitragvon fsabrina » Mi 9. Jan 2019, 21:05

Hi,
die sind alle numerisch.
VG Sabrina
fsabrina
 
Beiträge: 24
Registriert: Mi 14. Mai 2014, 09:39
Danke gegeben: 1
Danke bekommen: 0 mal in 0 Post

Re: COMPUTE mit IF kombinieren?

Beitragvon strukturmarionette » Do 10. Jan 2019, 02:06

Hi,

compute neuvar =99.
if ( (var_1 =1 or var_2 =2) or (var_2 =1 or var_2 =2) ) neuvar=1.
execute.

Anm: Hast du viell mehrere SPSS-Dateien (DataSets) gleichzeitig geöffet?

Gruß
S.
strukturmarionette
 
Beiträge: 2449
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 7
Danke bekommen: 122 mal in 122 Posts

Re: COMPUTE mit IF kombinieren?

Beitragvon tr0002 » Fr 31. Mai 2019, 15:57

Hallo, ich wollte keinen neuen Tread aufmachen, deshalb hoffe ich hier Hilfe zu bekommen.

Mein Problem ist ebenfalls die Kombination der Befehle compute und do if/else if. Auch ich bekomme immer die "Fehlermeldung
4382 in Spalte 34. Text: erhalten. Nach einer Zielvariablen in einem neuen Befehl compute wurde ein Gleichheitszeichen erwartet, aber nicht gefunden". -> Wo finde ich Spalte 34????? :?:

Meine Syntax dazu sieht folgendermaßen aus:

compute zulassung_erhalten=$sysmis.
EXECUTE.

do if (studienrichtung=1).
do if (messzahl1 > 30.7).
compute zulassung_erhalten=0.
else if (messzahl1 <= 30.7).
COMPUTE zulassung_erhalten=1.
end if.
end if.

do if (studienrichtung=2).
do if (messzahl1 > 34.9).
compute zulassung_erhalten=0.
else if (messzahl1 <= 34.9).
compute zulassung erhalten=1.
end if.
end if.


Die erste Schleife läuft auch durch, aber bei "do if (studienrichtung = 2) ... compute zulassung erhalten=1" kommt jedes Mal diese Fehlermeldung :roll: !

Könnt Ihr mir bitte helfen?

Viele Grüße

S.
tr0002
 
Beiträge: 2
Registriert: Fr 31. Mai 2019, 15:30
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: COMPUTE mit IF kombinieren?

Beitragvon ponderstibbons » Fr 31. Mai 2019, 16:52

zulassung_erhalten muss es lauten, Du hast zulassung erhalten hingeschrieben.
ponderstibbons
 
Beiträge: 2472
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 1
Danke bekommen: 255 mal in 254 Posts

Nächste

Zurück zu SPSS Syntax

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast