Fragen und Diskussionen rund um die Arbeit mit SPSS. Für allgemeine Statistik-Themen, die nicht mit SPSS zusammenhängen, bitte das Statistik-Forum nutzen.
mein Problem besteht darin:
Eine Datei aus ca. 13000 Fällen mit der Schlüsselvariablen pat-ID ( ca. 6000 unterschiedliche ID) die allerdings jeweils mehrfach vorkommen können (1:n-Beziehung. Eine 2.te Variable "per protokoll" soll mit "1" für "ja" und "0" für "nein" ausgefüllt sein.
Jetzt ist für 1 Fall der Wert für eine 1:n Beziehung z.b. der Wert " ja"eingetragen und die anderen Felder sind leer. Wie bekomme ich automatisiert für alle Pat-ID diesen Patienten 1000 ebenfalls ein "ja" ? Und diese eben für alle ca. 6000 unterschiedliche pat-Ids? Denn es fehlen tausende von Werten.
Mit Hand ist dies doch sehr zeitraubend, unelegant und fehlerträchtig.
* Variable anlegen, die die ursprüngliche Sortierung wiedergibt.
COMPUTE sort = $CASENUM.
* Nach patID und PerProtokoll sortieren.
SORT CASES BY patID (A) PerProtokoll(D).
* Falls ein Fall bei PerProtokoll Missing ist, dann den Wert der darüberliegenden Zelle nehmen, sofern die patID identisch ist.
IF MISSING(PerProtokoll) & patID = LAG(patID) PerProtokoll = LAG(PerProtokoll).
* Die ursprüngliche Sortierreihenfolge wiederherstellen und die Sortiervariable löschen.
SORT CASES BY sort.
DELETE VAR sort.
Viele Grüße,
georggraph
"Ein kaum merkliches Kopfnicken verriet dann, dass er nicht die Absicht habe, diese Frage zu beantworten, und es war Sache des Fragestellers, seinen eigenen Fehler zu erkennen und die Frage neu zu formulieren." (F.Kafka: Der Verschollene)
vielen dank für die rasche und gute Lösung die ich gleich mal ausprobieren werde.
Per Patid kann muss die Antwort per Protokoll imer die gleiche sein, weil alle Fälle pro Patient werden sollen.
Wo und wie kann man so was lernen selbst zu schreiben?
Bei mir war es im Prinzip learning by doing, anfangs unterstützt von der Command Syntax Reference (dieses pdf-Dokument kann man - ggf. abhängig von der SPSS-Version - über das Hilfe-Menü direkt aufrufen).
Hilfreich ist es auch immer, in den Menüs nicht den Okay-Button, sondern den Einfügen-Button zu drücken - die Syntax wird dann automatisch generiert.
Viele Grüße,
georggraph
"Ein kaum merkliches Kopfnicken verriet dann, dass er nicht die Absicht habe, diese Frage zu beantworten, und es war Sache des Fragestellers, seinen eigenen Fehler zu erkennen und die Frage neu zu formulieren." (F.Kafka: Der Verschollene)
wenn man diesen Vorgang für mehrere (24 Variablen) durchführen muss, kann man dies mit einem Vektor, loop oder Makro lösen? Falls ja wie ungefähr oder exakt?
Hoffentlich kann jemand helfen stehe nämlich vor diesem Problem am Montag.
vielen Dank im voraus für hilfreiche Tipps und Syntax Codes.
Es beinhaltet eine !DO-Schleife, in der die Variablen v1 bis v24 Schritt für Schritt abgearbeitet werden. Müsste man nicht sortieren, hätte man das Problem auch ohne Makro einfach über eine DO-REPEAT-Schleife lösen können, aber wegen der Sortierung ist ein Makro notwendig.
Einziges Handicap bei der Makrolösung: Beim Makroaufruf kannst Du leider nicht mit dem TO-Befehl arbeiten (also nicht: "v1 TO v24"), sondern Du musst alle Variablennamen dort angeben.
Viele Grüße,
gg
"Ein kaum merkliches Kopfnicken verriet dann, dass er nicht die Absicht habe, diese Frage zu beantworten, und es war Sache des Fragestellers, seinen eigenen Fehler zu erkennen und die Frage neu zu formulieren." (F.Kafka: Der Verschollene)