Seite 1 von 2

COMPUTE mit IF kombinieren?

BeitragVerfasst: Mi 19. Dez 2018, 13:26
von fsabrina
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

Re: COMPUTE mit IF kombinieren?

BeitragVerfasst: Mi 19. Dez 2018, 14:13
von ponderstibbons
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

Re: COMPUTE mit IF kombinieren?

BeitragVerfasst: Do 20. Dez 2018, 13:03
von fsabrina
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

Re: COMPUTE mit IF kombinieren?

BeitragVerfasst: Do 20. Dez 2018, 15:37
von ponderstibbons
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

Re: COMPUTE mit IF kombinieren?

BeitragVerfasst: Mi 9. Jan 2019, 12:48
von fsabrina
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.

Re: COMPUTE mit IF kombinieren?

BeitragVerfasst: Mi 9. Jan 2019, 17:35
von strukturmarionette
Hi,

- welche (SPSS-)Variablentypen liegen vor?

Gruß
S.

Re: COMPUTE mit IF kombinieren?

BeitragVerfasst: Mi 9. Jan 2019, 21:05
von fsabrina
Hi,
die sind alle numerisch.
VG Sabrina

Re: COMPUTE mit IF kombinieren?

BeitragVerfasst: Do 10. Jan 2019, 02:06
von strukturmarionette
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.

Re: COMPUTE mit IF kombinieren?

BeitragVerfasst: Fr 31. Mai 2019, 15:57
von tr0002
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.

Re: COMPUTE mit IF kombinieren?

BeitragVerfasst: Fr 31. Mai 2019, 16:52
von ponderstibbons
zulassung_erhalten muss es lauten, Du hast zulassung erhalten hingeschrieben.