anythingtodate帶你輕鬆處理日期

2021-02-19 Stata and Python數據分析

本文作者:朱巧利

文字編輯:張馨月

在平時我們進行實證研究時,需要處理的數據中大多都包含日期,但通過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)應廣大讀者要求,現開通有償問答服務,如果大家遇到有關數據處理、分析等問題,可以在公眾號中提出,只需支付少量賞金,我們會在後期的推文裡給予解答。

相關焦點

  • 別用Date了,Java8新特性之日期處理,現在學會也不遲!
    獲取當前的日期Java 8 中的 LocalDate 用於表示當天日期。和 java.util.Date不同,它只有日期,不包含時間。當你僅需要表示日期時就用這個類。//處理特定日期public void handleSpecilDate(){ LocalDate dateOfBirth = LocalDate.of(2018, 01, 21); System.out.println("The specil date is : " + dateOfBirth);}
  • 18 個示例帶你掌握 Java 8 日期時間處理!
    Java處理日期、日曆和時間的方式一直為社區所詬病,將 java.util.Date設定為可變類型,以及SimpleDateFormat的非線程安全使其應用非常受限。新API基於ISO標準日曆系統,java.time包下的所有類都是不可變類型而且線程安全。
  • JavaScript還可以處理日期?你只需要這樣做!
    與日期相關的問題與JavaScript一樣古老。從理論上講,如果不是因為API的許多弱點,可以使用JavaScript的date對象執行日期計算。幸運的是,有一些有用的庫可以為我們節省很多工作。其中之一是date-fns。一個問題,例如,是與日期對象不同的時區的處理,由於JavaScript使用當前系統時區為基礎。
  • 用date_time庫創建日期對象的方法,看完讓你收穫滿滿
    空的構造函數會創建一個值為 not_a_date_time 的無效日期;順序傳入年月日值則創建一個對應日期的date對象,例如:date d1;//一個無效的日期date d2(2010,1,1);//使用數字構造日期date d3(2000
  • 聽說你還在用SimpleDateFormat格式化日期
    ();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Date stationTime = dateFormat.parse(dateFormat.format(svcWorkOrderPo.getPayEndTime()));orderDailyStatisticsPo.setStatisticalDate(stationTime
  • Linux下日期時間date命令是如何使用的?
    前言在linux系統下,date命令被用來顯示或設定日期和時間。前面的文章我們介紹過,日誌是排查問題的重要組成部分,但在日誌的生成和查看中,與準確的時間是分不開的,如果時間不準確,查看起日誌來會變得很費勁。
  • Excel日期及時間函數——DATEVALUE函數
    DATEVALUE函數概念及語法DATEVALUE函數概念:將日期值從字符串轉化為序列數,表示日期時間代碼的日期;DATEVALUE 函數將存儲為文本的日期轉換為 Excel 識別為日期的序列號。 例如,公式=DATEVALUE("1/1/2008") 返回 39448,即日期 2008-1-1 的序列號。
  • 新東方英語口語入門Lesson 14:Date 日期
    新東方英語口語入門Lesson 14:Date 日期  1401  Lesson Fourteen Date 日期  when who whose where what how  date n.日期,約會  have a date with sb.
  • C++中,date_time庫使用date_period類來表示日期區間的概念
    date_time庫使用date_period類來表示日期區間的概念,它是時間軸上的一個左閉右開區間,端點是兩個date對象。區間的左邊界必須小於右邊界,否則date_period將表示一個無效的日期區間。
  • JAVA日期Date轉換String其實很簡單
    想了解更多的科技訊息,編程知識,走進不一樣的編程世界,請點擊右上角的「關注」,關注百家號:小菜鳥學技術在工作中,經常會碰到要把日期格式的數據保存到資料庫,或者是日期格式和字符串格式之間的互換問題。字母作用說明通過SimpleFormatDate把Date轉成String//Date 轉 StringDate date
  • 晚點通知你日期,用 inform you the date later是錯的
    來看幾個例子:Inform……of我等會兒會通知你日期錯誤:I』ll inform you the date later.正確:I』ll inform you of the date later.要通知人某件事情,這是 email 最常見的功能。但inform的基本用法是 Inform someone of something。of 這個小詞經常被忽略了。
  • 晚點通知你日期,用 inform you the date later是錯的!
    來看幾個例子:Inform……of我等會兒會通知你日期。錯誤:I』ll inform you the date later.正確:I』ll inform you of the date later.Remind……of這封郵件是要提醒你下列行程。錯誤:This email is to remind you the following appointment.
  • C++中,date_time庫示範日期迭代器的基本用法,都在這裡了
    date_time庫可以用簡單的遞增或者遞減操作符連續訪問日期,這些迭代器包括day_iterator、week_iterator、month_iterator和year_iterator,它們分別以天、周、月和年為單位增減。
  • 在C++中,date類訪問日期的操作方法,都在這裡了
    date類的對外接口很像C語言中的tm結構,也可以獲取它保存的年、月、日、星期等成分,但date還提供了更多的操作。成員函數year()、month()和day()分別返回日期的年、月、日:date d(2017,6,1);assert(d. year()==2017);assert(d. month()==6);assert
  • My97DatePicker日期插件的常用功能說明
    My97DatePicker是一款優秀的日期插件,它可以很方便地實現各種日期選擇效果,博得廣大IT開發人員的青睞。下面來講講它的常用功能及設置方法。先來最簡單的配置方法:(1)下載WdatePicker.js(包括lang和skin文件夾)。
  • 晚點通知你日期,用inform you the date later是錯的!
    來看幾個例子:Inform……of我等會兒會通知你日期。(X)I』ll inform you the date later.(O)I』ll inform you of the date later.要通知人某件事情,這是 email 最常見的功能。
  • Python 日期時間處理模塊學習筆記
    另外一點是,由於是基於Unix Timestamp,所以其所能表述的日期範圍被限定在 1970 – 2038 之間,如果你寫的代碼需要處理在前面所述範圍之外的日期,那可能需要考慮使用datetime模塊更好。
  • Python datetime指南:教你如何處理日期和時間(附試題+答案)
    ,它提供了 4 種對日期和時間進行處理的主要對象:datetime、date、time 和 timedelta。通過本文,你會學習到如何操作這些對象,並用 Python 解決一些有關日期和時間的實際問題。
  • java中date日期計算使用方法
    很簡單,代碼如下:Date date = new Date();上述代碼便初始化了一個時間類,雖然簡單,但是裡面的坑不少。單純的這樣寫並不能輸出我們想要的數據。接下來我們將標準時間格式,轉換成上述格式,代碼如下:String date2=temp.format(date);列印出來,我們看下效果:
  • PHP5中新增加的日期(date)函數的常量
    首頁 > 語言 > 關鍵詞 > php最新資訊 > 正文 PHP5中新增加的日期(date)函數的常量