问题背景
导入数据后,日期变量显示为红色,是文字变量。我们需要将其转换成黑色,即数值变量。以下是待处理数据。
![](https://img.haomeiwen.com/i7692714/71eb3f33ebe009ec.png)
处理方法 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)
![](https://img.haomeiwen.com/i7692714/8ae59ed938077b1f.png)
因此,我们只需设定其显示格式,即可让数值 28 显示为常规的日期格式:
format date_back1 %td //定义日期显示格式
list date* in 1/5, clean abb(20)
![](https://img.haomeiwen.com/i7692714/2db3916696b58888.png)
处理方法 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
![](https://img.haomeiwen.com/i7692714/b9a91db1d8698c90.png)
附:原始 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 应用的各种经验和技巧。
- 公众号推文同步发布于 【简书-Stata连享会】 和 【知乎-连玉君Stata专栏】。可以在简书和知乎中搜索关键词
Stata
或Stata连享会
后关注我们。 - 推文中的相关数据和程序,以及 Markdown 格式原文 可以在 【Stata连享会-码云】 中获取。【Stata连享会-码云】 中还放置了诸多 Stata 资源和程序。如 Stata命令导航 || stata-fundamentals || Propensity-score-matching-in-stata || Stata-Training 等。
联系我们
-
欢迎赐稿: 欢迎将您的文章或笔记投稿至
Stata连享会(公众号: StataChina)
,我们会保留您的署名;录用稿件达五篇
以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。 - 意见和资料: 欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。
- 招募英才: 欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
- 联系邮件: StataChina@163.com
连玉君Stata现场班报名中
![](https://img.haomeiwen.com/i7692714/99e0f080f41af585.jpg)
网友评论