Stata中如何将%td格式日期转换为YYYYMMDD格式?
Stata:将%td格式日期转换为YYYYMMDD格式
错误原因分析
你尝试的代码存在几个关键问题:
- 第一个代码:
daily(date, "DMY")完全多余,因为date已经是%td格式的日期型变量,daily()函数的作用是把字符串转成日期型,直接对日期型变量用这个函数会触发类型不匹配错误。 - 第二个代码:
mofd()会把日期转成月度日期(%tm格式),配合%tmCYN只能得到YYYYMM格式的年月值,不是你要的YYYYMMDD;而且先转字符串再转回日期属于冗余操作。 - 第三个代码:
date(dt, "YMD")的格式符错误,tostring后得到的dt是"30jan2015"(日-月-年结构),应该用"DMY"作为格式符,用"YMD"无法识别该字符串格式,所以生成缺失值。
正确转换方法
因为date已经是%td格式的日期型变量,直接提取年、月、日或用格式转换即可,无需额外的字符串转日期操作:
方法1:生成数值型YYYYMMDD
直接提取年、月、日并计算组合:
gen date_ymd_num = year(date) * 10000 + month(date) * 100 + day(date)
运行后date_ymd_num会是数值类型的20150130。
方法2:生成字符串型YYYYMMDD
用string()函数配合Stata的日期格式符直接转换:
gen date_ymd_str = string(date, "%tdCCYYNNDD")
如果需要把字符串转成数值,再加一步:
gen date_ymd_num = real(date_ymd_str)
内容的提问来源于stack exchange,提问作者PhDFin
相关产品推荐
相关产品推荐

