2013-08-14 20 views
5

Jestem nowy w firmie Stata i zastanawiam się, jak zmienić zmienną łańcuchową, która zawiera datę do formatu daty.Stata: jak zmienić zmienną ciągu na datę?

Dane w zmiennej wygląda następująco:

rrrr-mm-dd

powinienem najpierw usunąć kresek tak że Stata można rozpoznać formatu, aby później wykorzystać gen var = date()?

Dziękuję za pomoc.

+0

czy otrzymałeś odpowiedź, której potrzebowałeś? \ –

+0

Słowo "format" jest tu zdradliwe. "rrrr-mm-dd" jako wzorzec lub styl dat przechowywania to format (zmysl 1). Przypisywanie formatu wyświetlania dziennej daty Staty za pomocą polecenia 'format' jest słowem Staty (sens 2), ale nie jest wystarczające. Format daty (sens 3) oznacza, że ​​dzienne daty są przechowywane numerycznie i liczone w odniesieniu do 1 stycznia 1960. –

Odpowiedz

8

Stata date funkcja jest mądry o usunięcie separatorów. Zobacz help datetime_translation w sekcji „Funkcja daty”

Jeśli daty są w v1 iw postaci yyyy-mm-dd można określić komendy:

generate v2 = date(v1, "YMD") 
format %td v2 

The YMD nazywa się maska ​​, i mówi Stata kolejność, w której określone są części daty. W drugim wierszu zostanie przypisana zmienna format daty dziennej Stata, co oznacza, że ​​gdy spojrzysz na tę zmienną w danych, zostanie ona wyświetlona w formie czytelnej dla człowieka. Data jest jednak przechowywana jako liczba dni od 1 stycznia 1960.

Najlepszym sposobem na eksperymentowanie z funkcją date jest użycie polecenia display. W pierwszym wierszu zostanie wyświetlona liczba całkowita reprezentująca liczbę dni od 1 stycznia 1960 r. Druga linia wyświetli datę w formacie czytelnym dla człowieka.

display date("2013-08-14", "YMD") 
display %td date("2013-08-14", "YMD") 
+1

Edytowałem trochę objaśnienie formatowania. Ludzie zbyt często mylą przypisywanie formatu wyświetlania ze zmianą tego, co jest przechowywane. Twoje sformułowanie było dobre, ale zaostrzyłem je jeszcze bardziej. –

+0

Dzięki, że zadziałało dla mnie! – roland

+0

Jesteś ratownikiem !!! – Abramodj

1

można spojrzeć here aby zobaczyć, jak przerobić danych w Stata czy jak to

tostring datedx, replace 
generate str4 dxyr1= substr(datedx,1,4) 
generate str2 dxmo1 = substr(datedx,6,7) 
generate str2 dxda1 = substr(datedx,9,10) 
destring dx*, replace 
gen datedx1 = mdy(dxmo1, dxda1, dxyr1) 
+1

OP zaczyna się od zmiennej łańcuchowej, więc 'tostring' jest zbędny, ale nieszkodliwy. Używanie funkcji 'date()', podobnie jak w przypadku odpowiedzi @sechilds, jest znacznie bardziej bezpośrednie. –

+0

@NickCox yes sir –

Powiązane problemy