查看原文
其他

Stata:文字型日期格式的转换

Stata连享会 Stata连享会 2020-02-10

问题背景

导入数据后,日期变量显示为红色,是文字变量。我们需要将其转换成黑色,即数值变量。以下是待处理数据。




处理方法 1:Stata官方命令 date() 函数

两步:


第一步,使用 date() 函数将文字变量转化为日期变量;

第二步,使用 format 命令定义日期显示格式;


 gen date_back1 = date(date_str, "MDY")  
 format date_back1 %td //定义日期显示格式


解释: 


完成转换后的 date_back1 变量中存储的日期数值并不是你预期的 

01/29/1960 或29jan1960 样式,

而是数值 28。


事实上,1960 年 1 月 29 日距离 1960 年 1 月 1 日刚好是 28 天。

这就是 Stata 中标记日期的规则:以 1960 年 1 月 1 日 为基准日!


 gen date_back1 = date(date_str, "MDY")  
 list date* in 1/5, clean abb(20)



因此,我们只需设定其显示格式,即可让数值 28 显示为常规的日期格式:


 format date_back1 %td //定义日期显示格式  list date* in 1/5, clean abb(20)




处理方法 2:外部命令 todatetime

  • 安装

net install todatetime,  ///    from(https://raw.githubusercontent.com/mcaceresb/stata-todatetime/master/)
  • Stata 范例:

todatetime datestr, gen(date_back2) datefmt(MDY)
format dateback2 %td




附:原始 dofile

*---------------------------
*-虚构一份文字型的日期变量
*---------------------------
 sysuse gnp96, clear  tostring date, format(%td_NN/DD/CCYY)
 gen(date_str) force  list date date_str in 1/5, clean  

*----------
*-开始转换
*----------

*-Stata官方命令 date() 函数
 gen date_back1 = date(date_str, "MDY")  
 list date* in 1/5, clean abb(20)    format date_back1 %td //定义日期显示格式  list date* in 1/5, clean abb(20)    
*-外部命令:todatetime  
*-install
net install todatetime,  ///    from(https://raw.githubusercontent.com/mcaceresb/stata-todatetime/master/)

*-Stata 范例:
todatetime date_str, gen(date_back2) datefmt(MDY)
list date* in 1/5
format date_back2 %td
list date* in 1/5


关于我们

  • Stata 连享会(公众号:StataChina)】由中山大学连玉君老师团队创办,旨在定期与大家分享 Stata 应用的各种经验和技巧。

  • 公众号推文同步发布于 CSDN-Stata连享会 、简书-Stata连享会 和 知乎-连玉君Stata专栏。可以在上述网站中搜索关键词StataStata连享会后关注我们。

  • 点击推文底部【阅读原文】可以查看推文中的链接并下载相关资料。

  • Stata连享会2018.11现场课程-内生性专题


    联系我们

    • 欢迎赐稿: 欢迎将您的文章或笔记投稿至Stata连享会(公众号: StataChina),我们会保留您的署名;录用稿件达五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。

    • 意见和资料: 欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。

    • 招募英才: 欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。

    • 联系邮件: StataChina@163.com






    Stata连享会2018.11.23-25现场课程-内生性专题

    报名信息

    • 主办方:太原君泉教育咨询有限公司

    • 费用 (含报名费、材料费;差旅及食宿费自理):

    • 全价:3000元/人(预报名价 2900元/人,预报名10月31日截止)

    • 三人以及上:2800元/人

    • 团报价:2600元/人(五人及以上)

    • 学生价:2600元/人

    • Note: 以上所有优惠不叠加。

    • 报名:

    • 邮箱:wjx004@sina.com

    • 电话 (微信同号):王老师 18903405450 ;李老师 ‭1863610246

    • 对公账户: 35117530000023891(山西省太原市晋商银行南中环支行)

    • 公众号: 可搜索公众号名称(君泉Stata)或扫描二维码关注公众号了解详情

    • 温馨提示: 按预报名顺序排座位

    长按/扫描二维码报名:



    欢迎加入Stata连享会(公众号: StataChina)


      您可能也对以下帖子感兴趣

      文章有问题?点此查看未经处理的缓存