Hallo,
ich habe folgendes Problem: Ich habe einen großen Datensatz, der je Proband sehr viele String-Variablen enthält, die häufig (aber eben nicht immer) denselben Inhalt haben. Als Beispiel:
ID____Code.1___Code.2__Code.3_[...] Code.300
1_____ J12.8 ___J12.8____J12.8_______I50.01
2_____ S32.4____S32.4____K91.4 ______C83.3
3_____ E11.74___E11.74___E11.74 ____.
4_____ J44.19___J44.19____. ________ .
5_____ S32.4____S32.4____ S32.4_____S32.4
6_____ E11.74___E11.74___ K91.4_____J12.8
Ich würde nun gern diese Variablen miteinander vergleichen und identische zusammenfassen. In meiner Vorstellung müssten die Variablen Code.1 bis Code.300 jeweils einzeln miteinander abgeglichen werden, und sobald z.B. Code.5 ≠ Code.6, hätte ich gern Code.6 als neue Variable (Compute newvar.1 = Code.6), möchte dann aber, dass SPSS danach fortfährt, Code.6 mit Code.7 abzugleichen usw., und mir jedes Mal, wenn die Variablen nicht identisch sind, eine neue Variable mit dem jeweils neuen Code auswirft. Ich hoffe, das ist verständlich. Im Ergebnis also beispielsweise so:
ID____Code.1___Code.2__Code.3_[...] Code.300____newvar.1____newvar.2
1_____ J12.8____J12.8 ___J12.8______I50.01_______I50.01
2_____ S32.4____S32.4____K91.4 _____C83.3_______K91.4_______C83.3
3_____ E11.74___E11.74___E11.74 ____.
4_____ J44.19___J44.19____. ________ .
5_____ S32.4____S32.4____ S32.4_____S32.4
6_____ E11.74___E11.74___ K91.4_____J12.8_______K91.4_______J12.8
Über DO REPEAT kriege ich das Problem leider nur teilweise gelöst. Hier meine bisherige Syntax:
string newvar.1 (A6).
DO REPEAT x = Code.1 TO Code.299 / y = Code.2 TO Code.300.
Do if (x NE y) AND (y NE '').
COMPUTE newvar.1=y.
end if.
end repeat.
Damit kriege ich immerhin schon einmal raus, wer mindestens zwei verschiedene Codes hat und wie der jeweils letzte andere Code lautet. Wenn der Code aber öfter als 1mal wechselt (wie zB bei ID 2 und 6), bekomme ich nur den jeweils letzten neuen Code als newvar.1 ausgespielt, da SPSS natürlich immer weiter abgleicht und den Inhalt von newvar.1 eben immer wieder ersetzt. Ich habe versucht, an der fraglichen Stelle einen dritten Platzhalter (z) einzubauen (newvar.z, vorher in der Do Repeat-Zeile definiert als z = 1 2 3 4 5 6). Das ging aber leider nicht, da DO REPEAT scheinbar nur 2 Platzhalter zulässt.
Hat hier jemand eine Idee, wie man das lösen könnte?
Vielen Dank im Voraus und BG
viele String-Variablen vergleichen und zusammenfassen
-
- Beiträge: 1
- Registriert: 29.02.2024, 10:42
-
- Beiträge: 2743
- Registriert: 01.02.2018, 10:45