2013-08-14 15 views
5

Stata'da yeniyim ve bir tarih formatı içeren bir dize değişkeni nasıl değiştirebilirim merak ediyorum. değişkenindeStata: Bir dize değişkenini bir tarihe nasıl değiştirilir?

veri şuna benzer:

yyyy-aa-gg Stata sonra gen var = date() kullanmak için biçimini tanımıyor böylece

Ben ilk tire kaldırmak gerekir mi?

Yardımlarınız için teşekkür ederiz.

+0

İstediğiniz cevabı aldınız mı? \ " –

+0

" Biçimi "sözcüğü burada haince. "Yyyy-mm-dd", tarihleri ​​tutmak için bir desen veya stil olarak bir biçimdir (anlam 1). Stata'nın günlük tarih görüntüleme formatını "format" komutuyla atama Stata'nın kelime anlamı (sense 2), ancak yeterli değil. Tarih formatı (sense 3), sayısal olarak saklanan ve 1 Ocak 1960'a göre sayılan günlük tarihler anlamına gelir. –

cevap

8

gibi Stata verilerde dönüştürmek veya nasıl yapılacağını görmek için here bakabilirsiniz. Bir maskesi denir

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

YMD ve anlatır: Tarihlerinizin v1 ve formda yyyy-mm-dd iseniz Komutları belirtebilirsiniz "tarih fonksiyonu" bölümü altında

help datetime_translation Bkz Tarihin bölümlerinin belirtildiği sırayı takip edin. İkinci satır, değişkeni Stata günlük tarih formatına atayacak, yani bu değişkendeki verilere baktığınızda, insan tarafından okunabilir formda gösterilecektir. Ancak, tarih 1 Ocak 1960'dan bu yana gün sayısı olarak kaydedilir.

date işlevini denemenin en iyi yolu, display komutunu kullanmaktır. İlk satır, 1 Ocak 1960'dan bu yana geçen gün sayısını temsil eden bir tamsayı gösterir. İkinci satır, tarihi okunabilir bir biçimde görüntüler.

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

Biçimlendirme açıklamasını biraz düzenledim. İnsanlar çoğu zaman saklanan şeyi değiştirerek bir görüntü formatı atamayı karıştırırlar. Sizin ifadeleriniz iyiydi, ama daha da sıkılaştırdım. –

+0

Teşekkürler bu benim için çalıştı! – roland

+0

Sen bir cankurtaran var! – Abramodj

1

Eğer Stata date fonksiyon ayırıcı karakterleri kaldırma hakkında akıllı bu

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, bir string değişkeniyle başlar, bu nedenle "tostring" gereksizdir, ancak zararsızdır. @sechilds tarafından verilen cevapta olduğu gibi, date() 'işlevinin kullanılması çok daha doğrudan. –

+0

@NickCox evet efendim –

İlgili konular