2013-08-14 29 views
5

Sono nuovo di Stata e mi chiedo come posso cambiare una variabile di stringa che contiene una data in un formato di data.Stata: come modificare una variabile stringa in una data?

I dati nella variabile aspetto:

aaaa-mm-gg

Devo prima rimuovere i trattini in modo che Stata in grado di riconoscere il formato al fine di utilizzare al più tardi gen var = date()?

Grazie per il vostro aiuto.

+0

hai ottenuto la risposta necessaria? \ –

+0

La parola "formato" è pericolosa qui. "aaaa-mm-gg" come uno schema o uno stile per tenere le date è un formato (senso 1). Assegnare il formato di visualizzazione della data giornaliera di Stata con il comando 'format' è il senso della parola di Stata (senso 2), ma non è sufficiente. Formato della data (senso 3) significa che le date giornaliere vengono memorizzate numericamente e conteggiate rispetto al 1 gennaio 1960. –

risposta

8

La funzione Stata date è intelligente sulla rimozione di caratteri separatori. Vedere help datetime_translation nella sezione "la funzione di data"

Se le date in v1 e nella forma yyyy-mm-dd è possibile specificare i comandi:

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

Il YMD viene chiamato un maschera, e racconta Stata l'ordine in cui sono specificate le parti della data. La seconda riga assegnerà alla variabile il formato di data giornaliera Stata, il che significa che quando si guarda quella variabile nei dati, essa verrà mostrata in forma leggibile. La data viene memorizzata, tuttavia, come il numero di giorni dal 1 ° gennaio 1960.

Il modo migliore per sperimentare la funzione date consiste nell'utilizzare il comando display. La prima riga visualizzerà un numero intero che rappresenta il numero di giorni dal 1 ° gennaio 1960. La seconda riga visualizzerà la data in un formato leggibile dall'uomo.

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

Ho modificato leggermente la spiegazione della formattazione. La gente troppo spesso confonde l'assegnazione di un formato di visualizzazione con la modifica di ciò che è memorizzato. La tua formulazione è stata buona, ma l'ho ulteriormente rafforzata. –

+0

Grazie che ha funzionato per me! – roland

+0

Sei un salvagente !!! – Abramodj

1

si può guardare here per vedere come convertire i dati in Stata o ti piace questo

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

L'OP inizia con una variabile stringa, quindi 'tostring' è ridondante, ma innocuo. Usare la funzione 'date()', come nella risposta di @sechilds, è molto più diretto. –

+0

@NickCox si signore –

Problemi correlati