【发布时间】:2014-07-22 12:48:03
【问题描述】:
我想从一些开始和结束日期创建虚拟变量,如果在范围内,则取值为 1。例如,来自
id start end
1 01072014 05072014
1 05012014 06012015
我想得到
id start end d_01012014 d_02012014 d_03012014 ... d_01052014 ... d_31122014
1 01012014 02012014 1 1 0 0 0
1 01052014 02052015 0 0 0 1 0
这样我最终可以重塑我的长期数据,将所有观察结果排除在白天范围之外。 我的想法是使用 stata 日期格式的循环,如下所示:
foreach i in *stataformat startdate*/*stataformat enddate* {
generate d_`i'=1 if `i'>=start & `i'<=end
}
但是这种方法的问题是我的变量会有难以理解的名称。那么您是否建议另一种方法,或者知道如何将包含 stata 日期代码的变量重命名为“可理解的”名称? 非常感谢!
【问题讨论】:
-
能给个完整的宏吗?我不知道您为 stataformat startdate 输入了什么。一个潜在的解决方法是将您的日期更改为“从参考日期过去的天数/周数”。另一个(我还没有验证)是从每个 i 中提取月、日和年,并将它们连接在一起作为你的变量名。
-
日期(不是日期和时间)的内部 Stata 格式是 1960 年 1 月 1 日中的天数,所以这已经是 @Penguin_Knight 建议的格式
标签: stata