如何从Stata elapsed date变量生成年度日历变量
从Stata Elapsed Date提取年份生成新变量
嘿,我来帮你搞定这个需求!你需要的是生成一个真正的数值型年份变量,而不是仅仅调整日期的显示格式,对吧?这里有两种简单又靠谱的方法:
方法1:使用内置的year()函数(推荐)
这是最直接的方式,Stata的year()函数可以直接从日期变量中提取对应的年份,生成的变量是纯数值类型,完全符合你的要求。
完整代码示例
clear input long patid float date 1015 18766 1018 13135 1020 13325 1025 14384 1029 14514 1050 13501 1070 14523 1071 14878 1090 14701 1092 14159 end format %td date * 生成年度变量year_var gen year_var = year(date) * 查看结果,验证年份是否正确 list patid date year_var
运行这段代码后,你会看到新变量year_var里就是每个日期对应的年份(比如date=18766对应的是2021年,因为Stata的%td日期以1960年1月1日为基准日,18766天后就是2021年4月20日)。
方法2:使用yofd()函数(和year()效果一致)
yofd()是“year of date”的缩写,功能和year()完全相同,只是函数名不同,你可以根据习惯选择:
* 用yofd()生成年度变量 gen year_var2 = yofd(date) * 对比两个变量的结果,确认一致 list patid date year_var year_var2
小提示
要确保你的date变量是Stata能识别的日期型变量:如果你的原始变量还没被定义为日期,需要先使用gen date = date(原始变量, "日期格式")转换(比如gen date = date(raw_date, "YMD")),但你的示例数据已经是elapsed date数值,并且已经用format %td date设置了显示格式,所以直接用上面的函数就可以啦。
内容的提问来源于stack exchange,提问作者Abdul-Kareem Abdul-Rahman
相关产品推荐
相关产品推荐

