我有一个数据集,其日期变量缺少日期。
var1
15sep2014
15sep2014
17sep2014
18sep2014
22sep2014
22sep2014
22sep2014
29sep2014
06oct2014
我使用此命令聚合数据。
gen week = week(var1)
,结果看起来像这样
var 1 week
15sep2014 37
15sep2014 37
17sep2014 38
18sep2014 38
22sep2014 38
我想知道是否有可能获得月份名称和一周中的年份变量。
答案 0 :(得分:3)
一般情况下,week()
是解决方案的一部分,当且仅当您根据Stata的规则定义周数周时。他们是
你使用这些规则吗?我猜不会。然后最简单的做法是按周开始的一周定义一周。如果您的周数从星期日开始,则使用规则(
每日日期- dow(
每日日期))
。如果您的周数从星期一,......,星期六开始,请调整定义。
. clear
. input str9 svar1
svar1
1. "15sep2014"
2. "15sep2014"
3. "17sep2014"
4. "18sep2014"
5. "22sep2014"
6. "22sep2014"
7. "22sep2014"
8. "29sep2014"
9. "06oct2014"
10. end
. gen var1 = daily(svar1, "DMY")
. gen week = var1 - dow(var1)
. format week var1 %td
. list
+-----------------------------------+
| svar1 var1 week |
|-----------------------------------|
1. | 15sep2014 15sep2014 14sep2014 |
2. | 15sep2014 15sep2014 14sep2014 |
3. | 17sep2014 17sep2014 14sep2014 |
4. | 18sep2014 18sep2014 14sep2014 |
5. | 22sep2014 22sep2014 21sep2014 |
|-----------------------------------|
6. | 22sep2014 22sep2014 21sep2014 |
7. | 22sep2014 22sep2014 21sep2014 |
8. | 29sep2014 29sep2014 28sep2014 |
9. | 06oct2014 06oct2014 05oct2014 |
+-----------------------------------+
答案 1 :(得分:0)
我可能会使用week()
功能将您的wofd()
每日日期转换为%td
每周日期,而不是使用%tw
功能。然后,您可以使用日期时间显示格式来确定如何格式化日期。例如:
gen date_weekly = wofd(var1)
format date_weekly %twww:_Mon_ccYY
该代码应该为您提供:
var1 date_weekly
15sep2014 37: Sep 2014
15sep2014 37: Sep 2014
17sep2014 38: Sep 2014
18sep2014 38: Sep 2014
22sep2014 38: Sep 2014
此帮助文件非常有用:
help datetime display formats
如果你想了解%tw
和%td
日期之间的差异,你可以在这里刷新自己:
help datetime