Stata: Datumsvariable aus numerischer Variable generieren

08.06.2009 | Kategorie: Stata

Angenommen in einem Datensatz ist das Erhebungsdatum als numerische Variable gespeichert, bei der eine bestimmte Anzahl fixer Ziffern das Jahr, den Monat und den Tag angibt. Der 8. Juni 2009 wäre z.B. als 20090608 abgelegt.

Um diese numerische Datumsvariable in das Stata-eigene Datumsformat zu überführen, kann man die Datumsfunktion mdy() verwenden. Diese Funktion erwartet als Argumente den Monat, den Tag und das Jahr (in dieser Reihenfolge), relativ leicht lässt sich dann aus der numerischen Variable (numdate) mit einer Zeile eine neue Datumsvariable (date) generieren:

gen date = mdy(mod(floor(numdate/100),100), mod(numdate,100), floor(numdate/10000))
format date %td

Als Wert für den Monat übergeben wir den ganzzahligen Rest der Division durch 100 des abgerundeten Quotienten von numdate durch 100. Klingt komplizierter, als es ist:

20090608 / 100 = 200906,08
abgerundet 200906
200906 / 100 = 2009, Rest 6

Um der numerischen Variable den Tag zu entlocken, müssen wir dementsprechend bloß den ganzzahligen Rest der Division der “Datumszahl” durch 100 ermitteln:

20090608 / 100 = 200906, Rest 8

Sofern das Erhebungsjahr nicht ohnehin konstant ist, muss man den Quotienten der numerischen Datumsvariable durch 10000 abrunden, wodurch die letzten vier Stellen “abgeschnitten” werden:

20090608 / 10000 = 2009,0608
abgerundet 2009

So sieht der Funktionsaufruf am Ende wie folgt aus:

mdy(6, 8, 2009)

(engl.: Generate date from numeric variable in Stata)

Kommentieren