"Person-Jahr" Datenset erstellen

Alles rund um SPSS Syntax und Programmierung.

"Person-Jahr" Datenset erstellen

Beitragvon edro » So 28. Mai 2023, 12:32

Hallo! Ich werde im Rahmen meiner Masterarbeit bald eine Survival-Analyse für diskrete Zeit rechnen und muss dafür meinen Datensatz neu strukturieren. Ich bin seit Tagen auf der Suche nach einer Anleitung dafür, aber ich bin leider nicht fündig geworden. SPSS hat zwar die Funktion, den Datensatz vom "Wide-Format" ins "Long-Format" zu bringen, aber das führt nicht zum gewünschten Ergebnis. Ich kann mir vorstellen, dass das mit ein paar Zeilen Syntax geht, aber ich kenne mich da einfach nicht aus. Über Hilfe bin ich sehr dankbar.

Hier ist ein Beispiel, wie das Datenset umstrukturiert werden muss:
Bildschirm­foto 2023-05-28 um 12.24.54.png
Bildschirm­foto 2023-05-28 um 12.24.54.png (215.65 KiB) 1231-mal betrachtet


Hier gibt es ursprünglich für jede Person einen Wert (Time), der angibt, wann (in welchem Jahr) ein Ereignis eingetreten ist bzw. die Person ausgeschieden ist (indiziert durch Censor: Ja/Nein). Der kleinste Zeitwert im Datensatz ist 12, und der größte 24. In dem neuen Format hat dann jede Person für jedes Jahr eine Zeile, wo das Jahr Dummy-codiert ist. Mein Datensatz wird genauso aussehen, nur mit einem anderen Ereignis. Kann mir jemand zeigen, wie diese Umstrukturierung möglich ist?

Vielen Dank und liebe Grüße.
edro
 
Beiträge: 2
Registriert: So 28. Mai 2023, 12:14
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: "Person-Jahr" Datenset erstellen

Beitragvon strukturmarionette » Mo 29. Mai 2023, 11:45

Hi,

Datensatz neu strukturieren
seit Tagen auf der Suche nach einer Anleitung dafür

- es existiert dafür ein SPSS-Dialogfenster
(Syntax erstellt SPSS dabei zusätzlich automatisch mit)

Gruß
S.
strukturmarionette
 
Beiträge: 2458
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 7
Danke bekommen: 122 mal in 122 Posts

Re: "Person-Jahr" Datenset erstellen

Beitragvon edro » Mo 29. Mai 2023, 12:23

Hi,

vielen Dank für deine Antwort. Den Pfad "Daten --> Umstrukturieren" kenne ich, aber dort ist es so weit ich das richtig verstanden habe nur möglich, ins klassische Long-Format zu wechseln. Das Problem dabei ist, dass ich ja ausgehend von der einen Variable "Time" unterschiedlich viele Zeilen pro Person brauche. Ich wüsste nicht, dass es dafür eine Möglichkeit gibt.

Vielen Dank und viele Grüße
edro
 
Beiträge: 2
Registriert: So 28. Mai 2023, 12:14
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: "Person-Jahr" Datenset erstellen

Beitragvon strukturmarionette » Mo 29. Mai 2023, 12:37

Hi,

- vielleicht zunächst Sortieren lassen

Gruß
S.
strukturmarionette
 
Beiträge: 2458
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 7
Danke bekommen: 122 mal in 122 Posts

Re: "Person-Jahr" Datenset erstellen

Beitragvon ponderstibbons » Di 30. Mai 2023, 09:18

Das ist keine Umstrukturierung und "mit ein paar Zeilen Syntax" ist das so eine Sache.
Ich orientiere mich im Folgenden an dem, was Du als Ausgangssituation bzw. Ziel
beschrieben hast.

Zunächst eine Daten-Datei erschaffen, welche die IDs von 1 bis n enthält (hier als Beispiel: n=47),
und jede Id mehrfach, nämlich mit den Perioden 12 bis 24

INPUT PROGRAM.
LOOP #i=1 to 47.
- LOOP #j=12 to 24.
- COMPUTE id=#i.
- COMPUTE periode=#j.
- END CASE.
- END LOOP.
END LOOP.
END FILE.
END INPUT PROGRAM.
LIST.

Dann mit "Dateien zusammenfügen" die Variable Period (maximale Periode eines Falls) ergänzen, gematcht (Eins-zu-viele matching) wird anhand der Variable "id" .

Die Variablen D12 bis D24 kann man zwar eleganter erzeugen, aber es geht hier auch mit copy & Paste:
IF(periode=12) D12 = 1 .
IF(periode=13) D13 = 1 .
(usw.)
IF(periode=24) D24 = 1 .
EXECUTE .

Dann mit RECODE die missings von D12 bis D24 in Null umkodieren.

Dann mit select cases alle Zeilen löschen, in denen period > Periode .

HTH

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


Zurück zu SPSS Syntax

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste