本文作者:朱巧利
文字編輯:張馨月
在平時我們進行實證研究時,需要處理的數據中大多都包含日期,但通過excel或者其他途徑導入的數據中包含的日期很多時候是Stata不能直接識別的字符型或者數值型變量,如果不將其轉為Stata可識別的日期型變量,那麼接下來的數據處理可能就無法繼續進行。我們常用date()函數來進行日期的處理,但小編近日發現了一個同樣非常好用的命令anythingtodate,它能讓我們在處理數據中的日期時多一種選擇,從而更加輕鬆,接下來讓我們一起來看一下該命令如何使用吧~
命令anythingtodate可以將作為字符串或長數字輸入的日期變量轉換為Stata可識別的日期型變量,也可將Stata格式中識別為數字的日期更改為日期格式。
其為外部命令,使用前需安裝:
ssc install anythingtodate基本語法:
anythingtodate varlist [, keepvarlists format(string asis) reference(integer 19000000) ]varlist為需要進行轉換的日期的變量名;通過使用keepvarlists選項,我們能夠保留原始變量,避免原始變量被轉換後的變量替換掉;通過使用format選項,我們可以指定Stata日期轉換後的顯示格式;通過使用reference選項,我們能夠指定一個整數,如果變量的數字大於指定的數字,則認為此日期變量顯示為長數字,默認的整數為19000000。
首先使用input命令輸入我們接下來要展示的數據,並查看數據的類型:
clearinput str8 typestr long typelnum noformatdate "20170101" 20170101 20820 "20180320" 20180320 21263 "20200202" 20200202 21947enddes結果如下:
可以看到變量typestr為字符型,變量typelnum與noformatdate為數值型。
接下來我們可以利用anythingtodate命令非常輕鬆的將三個變量變為日期型數據,為了更好的對比,我們在此保留原始變量:
anythingtodate typestr typelnum noformatdate,k結果如下:
可以看到相應的變量都進行了轉換,為了更加直觀的看出區別,同樣我們利用describe命令來查看一下轉換後變量的格式:
通過anythingtodate命令,不管是字符型變量還是數值型變量都一舉轉換成了Stata可以識別的日期型變量,使用起來可以說是非常方便了。
我們還可以通過format(可簡寫為f)選項來選擇自己喜歡或者所需要的日期格式,讓數據看起來更加清晰美觀:
anythingtodate typestr typelnum noformatdate,k format(%dCY-N-D)結果如下:
一般我們不使用reference(可簡寫為r)選項,默認的整數19000000是最合適的,比如如果我們把這個整數設為19000,結果將會如何呢?讓我們來一起看一下:
anythingtodate typestr typelnum noformatdate,k format(%dCY-N-D) reference(19000)des
由於原始變量noformatdate中的每一個數字都大於19000,因此anythingtodate命令將其看作以長數字形式儲存的日期,所以沒有將它變成對應的如20170101的形式,此時又指定了轉換後的格式,從而因無法識別其年月日而出現缺失值。
當然我們也可以通過date()函數來轉換字符型的日期,再通過format來調整格式:
gen date = date(typestr,"YMD")format %dCY-N-D date可以看到能夠達到同樣的效果:
雖然結果相同,但利用anythingtodate可以兩行程序並一行,讓我們的程序更簡潔。如果想要處理日期更輕鬆,就來試試anythingtodate吧!
對我們的推文累計打賞超過1000元,我們即可給您開具發票,發票類別為「諮詢費」。用心做事,不負您的支持!基於貝葉斯定理的算法——樸素貝葉斯分類
爬取東方財富網當日股票交易情況
stata調用python爬取時間數據——借他山之石以攻玉
Stata有問必答環節
微信公眾號「Stata and Python數據分析」分享實用的stata、python等軟體的數據處理知識,歡迎轉載、打賞。我們是由李春濤教授領導下的研究生及本科生組成的大數據處理和分析團隊。
此外,歡迎大家踴躍投稿,介紹一些關於stata和python的數據處理和分析技巧。投稿郵箱:statatraining@163.com投稿要求:
1)必須原創,禁止抄襲;
2)必須準確,詳細,有例子,有截圖;
注意事項:
1)所有投稿都會經過本公眾號運營團隊成員的審核,審核通過才可錄用,一經錄用,會在該推文裡為作者署名,並有賞金分成。
2)郵件請註明投稿,郵件名稱為「投稿+推文名稱」。
3)應廣大讀者要求,現開通有償問答服務,如果大家遇到有關數據處理、分析等問題,可以在公眾號中提出,只需支付少量賞金,我們會在後期的推文裡給予解答。