Variable erstellen (2 verschiedene Umkodierungen in 1)

Allgemeine Fragestellungen zu Statistik mit SPSS.

Variable erstellen (2 verschiedene Umkodierungen in 1)

Beitragvon illwill » Fr 12. Feb 2021, 08:40

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
illwill
 
Beiträge: 3
Registriert: Do 11. Feb 2021, 13:24
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Variable erstellen (2 verschiedene Umkodierungen in 1)

Beitragvon strukturmarionette » Fr 12. Feb 2021, 09:22

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.
strukturmarionette
 
Beiträge: 2457
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 7
Danke bekommen: 122 mal in 122 Posts

Re: Variable erstellen (2 verschiedene Umkodierungen in 1)

Beitragvon illwill » Fr 12. Feb 2021, 11:32

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!
Zuletzt geändert von illwill am Fr 12. Feb 2021, 14:08, insgesamt 1-mal geändert.
illwill
 
Beiträge: 3
Registriert: Do 11. Feb 2021, 13:24
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Variable erstellen (2 verschiedene Umkodierungen in 1)

Beitragvon ponderstibbons » Fr 12. Feb 2021, 14:02

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

Re: Variable erstellen (2 verschiedene Umkodierungen in 1)

Beitragvon illwill » Fr 12. Feb 2021, 14:40

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?
Zuletzt geändert von illwill am Fr 12. Feb 2021, 15:56, insgesamt 1-mal geändert.
illwill
 
Beiträge: 3
Registriert: Do 11. Feb 2021, 13:24
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Variable erstellen (2 verschiedene Umkodierungen in 1)

Beitragvon ponderstibbons » Fr 12. Feb 2021, 15:26

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
ponderstibbons
 
Beiträge: 2477
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 1
Danke bekommen: 255 mal in 254 Posts


Zurück zu Statistik allgemein

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast