Hallo!
Ich kämpfe gerade mit einer Sekundärdatenanalyse.
Dabei habe ich folgendes Problem:
Es gibt eine Variable, die Aussagen darüber macht, in wievielen Monaten eines Jahres eine bestimmte Sache zutraf. Anstelle einfach eine Zahl zwischen 0 und 12 in diese Variable zu schreiben, hat ein ganz schlauer Kopf einen String daraus gemacht und zwar mit einem Zeichen pro Monat. D.h. wenn eine Sache von Januar bis Juni zutraf, so stehen in der Variable 6 Einsen hintereinander. Wenn es nur jeden zweiten Monat zutraf, stehen immer abwechselnd Einsen und Leerzeichen.
Gibt es eine Möglichkeit die Einsen des Strings zu summieren und in eine Variable zu schreiben?
Danke für Eure Hilfe und einen schönen Abend noch!
Viele Grüße
null.plan
String in Nummerische Variable umwandeln
-
- Beiträge: 11
- Registriert: 13.03.2008, 11:55
-
- Beiträge: 939
- Registriert: 13.05.2008, 10:52
hallo,
geht wahrscheinlich auch irgendwie sparsamer, aber das ist meine lösung:
zerlege die variable in 12 substrings, die dann anschliessen ins numerische format verwandelt werden. dann werden die 12 neuen variablen addiert.
transformieren -> berechnen -> erster substring wäre sub1 = substr(altevariable, 1, 1), wobei die erste 1 die position ist, die zweite 1 die länge des substrings in der neuen variablen -> siehe beispiel:
STRING sub1 (A8).
STRING sub2 (A8).
STRING sub3 (A8).
STRING sub4 (A8).
STRING sub5 (A8).
STRING sub6 (A8).
usw.
COMPUTE sub1 = SUBSTR(altevariable,1,1) .
COMPUTE sub2 = SUBSTR(altevariable,2,1) .
COMPUTE sub3 = SUBSTR(altevariable,3,1) .
COMPUTE sub4 = SUBSTR(altevariable,4,1) .
COMPUTE sub5 = SUBSTR(altevariable,5,1) .
COMPUTE sub6 = SUBSTR(altevariable,6,1) .
usw.
EXECUTE .
anschliessend eine der neuen string-variablen in der variablenansicht im typ verändern (string -> numerisch), dann den typ kopieren, die typenfelder der restlichen 11 variablen markieren und einfügen -> alle sind numerisch und können im folgenden addiert werden.
geht wahrscheinlich auch irgendwie sparsamer, aber das ist meine lösung:
zerlege die variable in 12 substrings, die dann anschliessen ins numerische format verwandelt werden. dann werden die 12 neuen variablen addiert.
transformieren -> berechnen -> erster substring wäre sub1 = substr(altevariable, 1, 1), wobei die erste 1 die position ist, die zweite 1 die länge des substrings in der neuen variablen -> siehe beispiel:
STRING sub1 (A8).
STRING sub2 (A8).
STRING sub3 (A8).
STRING sub4 (A8).
STRING sub5 (A8).
STRING sub6 (A8).
usw.
COMPUTE sub1 = SUBSTR(altevariable,1,1) .
COMPUTE sub2 = SUBSTR(altevariable,2,1) .
COMPUTE sub3 = SUBSTR(altevariable,3,1) .
COMPUTE sub4 = SUBSTR(altevariable,4,1) .
COMPUTE sub5 = SUBSTR(altevariable,5,1) .
COMPUTE sub6 = SUBSTR(altevariable,6,1) .
usw.
EXECUTE .
anschliessend eine der neuen string-variablen in der variablenansicht im typ verändern (string -> numerisch), dann den typ kopieren, die typenfelder der restlichen 11 variablen markieren und einfügen -> alle sind numerisch und können im folgenden addiert werden.
-
- Beiträge: 11
- Registriert: 13.03.2008, 11:55
Hallo KarinJ!
Vielen Dank für den tollen Tip!
Die Umwandlung hat super funktioniert, aber die Addition der subs funktioniert nicht. SPSS bringt mir keine Fehlermeldung, aber in der neuen Variable stehen auch keine Werte... )o:
Egal ob ich:
oder
eingebe, es stehen keine Werte in var.
Woran könnte das liegen?
Hab die subs auch in Nummerische umgepolt.
Danke für die Hilfe!
Viele Grüße
null.plan
Vielen Dank für den tollen Tip!
Die Umwandlung hat super funktioniert, aber die Addition der subs funktioniert nicht. SPSS bringt mir keine Fehlermeldung, aber in der neuen Variable stehen auch keine Werte... )o:
Egal ob ich:
Code: Alles auswählen
compute var = sum.x(subx1, subx2,...) . exe .
Code: Alles auswählen
compute var = subx1 + subx2 + ... . exe .
Woran könnte das liegen?
Hab die subs auch in Nummerische umgepolt.
Danke für die Hilfe!
Viele Grüße
null.plan
-
- Beiträge: 11
- Registriert: 13.03.2008, 11:55
Ich habs:
und dann mit
Code: Alles auswählen
DO REPEAT a = subx1 TO subxn .
recode a (sysmis = 0) .
end repeat .
exe .
Code: Alles auswählen
compute var = subx1 + subx2 + ... . exe .