Seite 1 von 1

Variable erstellen (2 verschiedene Umkodierungen in 1)

BeitragVerfasst: Fr 12. Feb 2021, 08:40
von illwill
Hallo,
ich habe ein Problem mit dem Umkodieren von Variablen. Ich möchte kategoriale Werte umkodieren und am Ende muss eine(!) Variable dabei herausspringen. Die Werte sind im Bereich von 0-10 und sollen am Ende nach bestimmten Kriterien in 3 neue Kategorien aufgeteilt sein (bspsw.: 0-3 = 1, 4 = 2, 5-10 = 3; "gut", "mittel", "schlecht"). Soweit so einfach... Das Problem liegt darin, dass die neuen Kategorien nicht immer gleich gebildet werden, sondern es hängt vom Alter ab.
Ein Bsp: im Alter von 2-4 Jahren sind die Werte 0-2 = 1, 3 = 2, 4-10 = 3. Im Alter von 5-6 Jahren sind die Werte aber wie oben beschrieben 0-3 = 1, 4 = 2, 5-10 = 3.
Wie kann ich für unterschiedliche Altersgruppen mit unterschiedlichen Einteilungen nur eine Variable erstellen? Ich möchte am Ende für alle Kinder von 2-6 Jahren wissen, ob diese "gut", "mittel" oder "schlecht" abgeschnitten haben.
Für Hilfe wäre ich überaus dankbar. :?:
Vielen Dank

Re: Variable erstellen (2 verschiedene Umkodierungen in 1)

BeitragVerfasst: Fr 12. Feb 2021, 09:22
von strukturmarionette
Hi,

- mit dem COMPUTE Befehl und entsprechender IF-Abfrage

oder

- über SPSS-Dialogfenster: Neue Variable erstellen und dann die Falls-Bedingung logisch korrekt programmieren

Gruß
S.

Re: Variable erstellen (2 verschiedene Umkodierungen in 1)

BeitragVerfasst: Fr 12. Feb 2021, 11:32
von illwill
Hallo S.

vielen Dank für die schnelle Antwort. Ich sehe im SPSS Dialogfenster, was du meinst, aber ich bin mir nicht sicher, wie ich zwei verschiedene Bedingungen programmieren kann bzw. wie ich die vorhandenen Daten in diesem Dialog umkodieren kann. Hier kann ich doch nur neue berechnen. Es gibt doch aber nichts zu rechnen. Ich habe eine (!) Ausgangsvariable mit verschiedenen kategorialen Ausprägungen und aus dieser soll eine (!) neue Variable kodiert werden.
In der Ausgangsvariable können Werte von 0-10 stehen und in Abhängigkeit vom Alter sollen in der Zielvariable dann Werte von 1-3 stehen.
Mein Bsp wäre so (einfach wörtlich in die Syntax geschrieben):

RECODE Variable A WENN JÜNGER ALS 5 JAHRE (3=2) (0 thru 2=1) (4 thru 10=3) ODER WENN Älter als 4 Jahre (4=2) (0 thru 3=1) (5 thru 10=3) INTO Variable B
VARIABLE LABELS Variable B 'Variable B'
EXECUTE.

Hättest du vielleicht mal ein Beispiel, wie die korrekte Programmierung für diesen Fall aussehen könnte? Ich wäre Dir sehr verbunden!

Re: Variable erstellen (2 verschiedene Umkodierungen in 1)

BeitragVerfasst: Fr 12. Feb 2021, 14:02
von ponderstibbons

Re: Variable erstellen (2 verschiedene Umkodierungen in 1)

BeitragVerfasst: Fr 12. Feb 2021, 14:40
von illwill
Hallo,
vielen Dank für die Hilfeversuche. Allerdings denke ich, dass ich vielleicht mein Problem noch nicht richtig formuliert habe (es kann auch gut sein, dass ich die Antworten nicht verstehe. SORRY dafür, falls es so ist :oops: )

Ich möchte dies erreichen (das farbig unterlegte nur als Beispiel, wie ich es mir vorstelle):
RECODE Variable A IF age<5 (3=2) (0 thru 2=1) (4 thru 10=3) OR IF age>4 (4=2) (0 thru 3=1) (5 thru 10=3) INTO Variable B
VARIABLE LABELS Variable B 'Variable B'
EXECUTE.

Ich möchte als eine Variable umkodieren in Abhängigkeit einer weiteren Variable. Geht das?

Momentan sieht meine ewig lange Syntax so aus (verkürzt, da hier ursprüngliche Werte von 0-40):
DO IF (age<5 and e_ges_score=0) AND (age<5 and e_ges_score=1) AND (age<5 and e_ges_score=2) AND (age<5 and e_ges_score=3).
COMPUTE ges_new=1.
ELSE IF (age<5 and e_ges_score=4) AND age<5 and e_ges_score=5) AND (age<5 and e_ges_score=6) AND (age<5 and e_ges_score=7).
COMPUTE ges_new=1.
ELSE IF (age<5 and e_ges_score=8) AND (age<5 and e_ges_score=9) AND (age<5 and e_ges_score=10) AND (age<5 and e_ges_score=11).
COMPUTE ges_new=1.
ELSE IF (age<5 and e_ges_score=12).
COMPUTE ges_new=1.
ELSE IF (age<5 and e_ges_score=13) AND (age<5 and e_ges_score=14) AND (age<5 and e_ges_score=15).
COMPUTE ges_new=2.
ELSE IF age<5 and e_ges_score=16) "17-39" AND (age_anthro_ref<5 and e_sdq_d00149_ges_score=40).
COMPUTE ges_new=3
ELSE IF (age>=5 and e_ges_score=0) AND (age>=5 and e_ges_score=1) AND (age>=5 and e_ges_score=2) AND (age>=5 and e_ges_score=3).
COMPUTE ges_new=1.
ELSE IF (age>=5 and e_ges_score=4) AND (age>=5 and e_ges_score=5) AND (age>=5 and e_ges_score=6) AND (age>=5 and e_ges_score=7).
COMPUTE ges_new=1.
ELSE IF (age>=5 and e_ges_score=8) AND (age>=5 and e_ges_score=9) AND (age>=5 and e_ges_score=10) AND (age>=5 and e_ges_score=11).
COMPUTE ges_new=1.
ELSE IF (age>=5 and e_ges_score=12) AND (age>=5 and e_ges_score=13).
COMPUTE ges_new=1.
ELSE IF (age>=5 and e_ges_score=14) AND (age>=5 and e_ges_score=15) AND (age>=5 and e_ges_score=16).
COMPUTE ges_new=2.
ELSE IF (age>=5 and e_ges_score=17) AND (age>=5 and e_ges_score=18) AND (age>=5 and e_ges_score=18).
COMPUTE ges_new = 3.
ELSE IF (age>=5 and e_ges_score=19) AND "17-39" AND (age_anthro_ref>4.99 and e_sdq_d00149_ges_score=40).
COMPUTE ges_new = 3.
END IF.
EXECUTE.

Das wird auch berechnet von SPSS. Allerdings zeigt das Ergebnis nur ganz wenig "1" an und der Rest wird als "2" codiert. Die Kategore "3" kommt überhaupt nicht vor. Hat jemand eine Ahnung, wo der Fehler liegen könnte?

Re: Variable erstellen (2 verschiedene Umkodierungen in 1)

BeitragVerfasst: Fr 12. Feb 2021, 15:26
von ponderstibbons
Das ginge durch IF(age < 5 AND altvar =3) neuvar = 2 etc.,
wäre aber zugegeben aufwändig.

Da Du nun wusstest, dass es um "else if" geht, wäre der
Rest eigentlich nicht schwer herzuleiten oder zu
recherchieren gewesen, aber sei's drum, Beispiele gibt
es hier:

https://www.spss-tutorials.com/spss-do-if-command/

Mit freundlichen Grüßen

PonderStibbons