Seite 1 von 1

Fehlendes Datum innerhalb von Personen einfügen

BeitragVerfasst: Mi 9. Okt 2019, 12:54
von psych
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

Re: Fehlendes Datum innerhalb von Personen einfügen

BeitragVerfasst: Mi 9. Okt 2019, 16:39
von ponderstibbons
*** 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

Re: Fehlendes Datum innerhalb von Personen einfügen

BeitragVerfasst: Do 10. Okt 2019, 09:11
von psych
Hat grossartig funktioniert. Vielen, vielen Dank für die rasche Hilfe!