Berechnung Zeitfenster zwischen 2 Variablen

Fragen zu Stata Syntax und Do-Files.

Berechnung Zeitfenster zwischen 2 Variablen

Beitragvon texmex » Di 26. Mär 2013, 15:07

Hallo Leute,

ich möchte das Zeitfenster zwischen zwei Variablen berechnen. Ich habe folgendes Problem:
Variable 1 "ResearchDate"hat das Format %td (type int), während Variable 2 (FY1) das Format %12.0g (type long) aufweist. Zudem enthält die Variable "FY1" nur Monat und Jahr. Ich möchte nun die Differenz zwischen den beiden Variablen berechnen. Für "FY1" soll immer das Ende des Monats angenommen werden, im unteren Beispiel also der 31.12.2006. Wie kann ich die Daten ändern und vereinheitlichen, sodass ich im Anschluss nur noch "FY1 - ResearchDate" ausführen muss, um das Ergebnis zu erhalten?

ResearchDate FY1
27feb2006 200612

Vielen Dank für eure Hilfe!
texmex
 
Beiträge: 14
Registriert: Fr 8. Mär 2013, 10:22
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Berechnung Zeitfenster zwischen 2 Variablen

Beitragvon daniel » Mi 27. Mär 2013, 00:46

Code: Alles auswählen
g foo = date(string(FY1) + "31", "YMD")
form foo %td


Wird natürlich etwas komplexer, wenn Du das Monatsende passend zum jeweiligen Monat auf 31, 30 oder 28 (bzw. 29) setzen willst. Das wird dann kaum in einem Schritt möglich sein, aber die string Funktion -substr()- könnte da hilfreich sein.
Stata is an invented word, not an acronym, and should not appear with all letters capitalized: please write “Stata”, not “STATA”.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Berechnung Zeitfenster zwischen 2 Variablen

Beitragvon texmex » Fr 26. Apr 2013, 11:27

Hallo Daniel,

ich komme noch einmal zurück auf dieses Thema. Dein Befehl funktioniert einwandfrei, wenn der entsprechende Monat 31 Tage hat. Falls in FY1 jedoch ein Monat mit weniger als 31 Tagen enthalten ist, wird ein Missing Value generiert. Es ist nachvollziehbar, da es z.B. den April ja nicht mit 31 Tagen gibt. Für meinen Fall wäre es jedoch absolut ausreichend, wenn einfach alle Tage auf 31 gesetzt werden, auch im Feb, Apr, Jun etc.

Gibt es eine Möglichkeit, das so umzusetzen?
texmex
 
Beiträge: 14
Registriert: Fr 8. Mär 2013, 10:22
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Berechnung Zeitfenster zwischen 2 Variablen

Beitragvon daniel » Fr 26. Apr 2013, 12:47

Für meinen Fall wäre es jedoch absolut ausreichend, wenn einfach alle Tage auf 31 gesetzt werden, auch im Feb, Apr, Jun etc.

Gibt es eine Möglichkeit, das so umzusetzen?


Ich vermute nein. Was ich hier (ich weiß, umständlich) versuchen würde, wäre die fehlenden Werte (sofern sie den eindeutig aus diesem Grund auftreten) einfach Schritt für Schritt mit dem 30., 28. und 29. zu ersetzen. An meinen code anknüpfend etwa

Code: Alles auswählen
foreach d in 30 28 29 {
    replace foo = date(string(FY1) + "`d'", "YMD") if mi(foo)
}
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Berechnung Zeitfenster zwischen 2 Variablen

Beitragvon texmex » Fr 26. Apr 2013, 13:51

Vielen Dank, passt perfekt und ist eindeutig kürzer als die Alternative, die ich mir rausgesucht habe =)
texmex
 
Beiträge: 14
Registriert: Fr 8. Mär 2013, 10:22
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Stata Syntax

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron