Fehlendes Datum innerhalb von Personen einfügen

Alles rund um SPSS Syntax und Programmierung.

Fehlendes Datum innerhalb von Personen einfügen

Beitragvon psych » Mi 9. Okt 2019, 12:54

Liebe Alle,
für die Aufbereitung einer Tagebuchstudie möchte ich gerne ausgehend von einem individuellen Startdatum (01.01.2019), Zeilen innerhalb einer Person einfügen, bis zu einem Enddatum (31.01.2019).
Exemplarisch sieht der Datensatz so aus:
ID, Date
1, 01.01.2019 <- Startdate
1, 06.01.2019 <- Enddate
2, 03.01.2019 <- Startdate
2, 07.01.2019 <- Enddate

Das Ergebnis sollte dementsprechend für id=1 so aussehen:
1, 01.01.2019
1, 02.01.2019
1, 03.01.2019
1, 04.01.2019...
Bekommt das jemand hin? Vielen lieben Dank für jegliche Hilfe oder Denkanstösse.
Liebe Grüsse
psych
 
Beiträge: 2
Registriert: Mi 9. Okt 2019, 12:47
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Fehlendes Datum innerhalb von Personen einfügen

Beitragvon ponderstibbons » Mi 9. Okt 2019, 16:39

*** Ich gehe davon aus, dass wie im Beispiel "id" einfach eine Durchnummerierung der Probanden ist .

*** Ausgangsdatei bearbeiten: Erzeugen einer neuen Datei mit 1 Zeile pro Proband, die als Variablen "Id", das Startdatum und die maximale Beobchtungsdauer enthält .

IF (id = LAG(id)) startdatum=LAG(date).
EXECUTE.
FORMATS startdatum(Edate8) .

COMPUTE maxtag=DATEDIFF(date,startdatum,"days") .
VARIABLE LABELS maxtag 'Maximale Zahl Beobachtungstage'.
EXECUTE.

FILTER OFF.
USE ALL.
SELECT IF (NOT MISSING(maxtag)).
EXECUTE.

*** Unter neuem Namen abspeichern . Speicherort bei eigener Verwendung gegebenenfalls anpassen .

SAVE OUTFILE='C:\TEMP\hilfsdatei1.sav'
/KEEP=id startdatum maxtag .


****Eine neue Datei für die Datumslisten erzeugen. Im Beispiel haben wir 100 Probanden und über alle Probanden hinweg eine maximale Beobachtungsdauer von 77 Tagen. Diese Werte entsprechend den tatsächlichen Gegebenheiten abändern .

INPUT PROGRAM.
LOOP #i=1 to 100.
- LOOP #j=1 to 77.
- COMPUTE id=#i.
- COMPUTE beobtag=#j - 1.
- END CASE.
- END LOOP.
END LOOP.
END FILE.
END INPUT PROGRAM.

EXECUTE .

VAR LAB beobtag "Beobachtungstag nach Starttag" .

**** Die Dateien zusammenfügen .

STAR JOIN
/SELECT t0.beobtag, t1.startdatum, t1.maxtag
/FROM * AS t0
/JOIN 'C:\Temp\hilfsdatei1.sav' AS t1
ON t0.id=t1.id
/OUTFILE FILE=*.

***Nicht benötigte Beobachtungstage löschen .

FILTER OFF.
USE ALL.
SELECT IF (beobtag+1 <= maxtag).
EXECUTE.

*** Datumsvariable erzeugen .

COMPUTE date_neu=DATESUM(startdatum,beobtag,"day").
EXECUTE.
FORMATS date_neu (EDATE8) .

Mit freundlichen Grüßen

PonderStibbons
ponderstibbons
 
Beiträge: 1407
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 137 mal in 137 Posts

Re: Fehlendes Datum innerhalb von Personen einfügen

Beitragvon psych » Do 10. Okt 2019, 09:11

Hat grossartig funktioniert. Vielen, vielen Dank für die rasche Hilfe!
psych
 
Beiträge: 2
Registriert: Mi 9. Okt 2019, 12:47
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu SPSS Syntax

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron