创建周的自定义定义
Create Custom Definition of Week
我有每日数据,想将它们转换为每周数据,使用以下定义。每周一表示第i周的开始,周日表示第i周的结束
我的日期变量名为 day
,并且已经具有 %td
格式。我有一种感觉,我应该使用 dow()
函数,结合 egen, group()
但我很难让它完全正确。
如果您的数据是每周一次,并且只有星期一的数据,那么您的日期变量就可以了,如果您使用 tsset
或 [=,您需要做的就是声明 delta(7)
13=]。
如果您的数据是一周两天或更多天,并且您希望 collapse
或 contract
为每周数据,那么您可以像这样转换为合适的时间基准:
* Example generated by -dataex-. To install: ssc install dataex
clear
input float date
22067
22068
22069
22070
22071
22072
22073
22074
22075
22076
22077
22078
22079
22080
end
format %td date
gen wdate = cond(dow(date) == 1, date, cond(dow(date) == 0, date - 6, date - dow(date) + 1))
format wdate %td
gen dow = dow(date)
list, sepby(wdate)
+-----------------------------+
| date dow wdate |
|-----------------------------|
1. | 01jun2020 1 01jun2020 |
2. | 02jun2020 2 01jun2020 |
3. | 03jun2020 3 01jun2020 |
4. | 04jun2020 4 01jun2020 |
5. | 05jun2020 5 01jun2020 |
6. | 06jun2020 6 01jun2020 |
7. | 07jun2020 0 01jun2020 |
|-----------------------------|
8. | 08jun2020 1 08jun2020 |
9. | 09jun2020 2 08jun2020 |
10. | 10jun2020 3 08jun2020 |
11. | 11jun2020 4 08jun2020 |
12. | 12jun2020 5 08jun2020 |
13. | 13jun2020 6 08jun2020 |
14. | 14jun2020 0 08jun2020 |
+-----------------------------+
简而言之,按开始的星期一索引周。现在 collapse
或 contract
您的数据集。当然,如果您有面板数据或纵向数据,也可能涉及一些标识符。 delta(7)
对于任何依赖于 tsset
或 xtset
的东西来说仍然是必不可少的。
使用 egen
映射到连续的整数没有坏处,但也没有任何优势。
这背后的一个主题是 Stata 自己的周是特殊的,总是从 1 月 1 日开始第 1 周,第 52 周总是有 8 或 9 天。有关 Stata 周的更多信息,请参阅论文 here and here ,其中包括此答案中给出的建议等等。
我有每日数据,想将它们转换为每周数据,使用以下定义。每周一表示第i周的开始,周日表示第i周的结束
我的日期变量名为 day
,并且已经具有 %td
格式。我有一种感觉,我应该使用 dow()
函数,结合 egen, group()
但我很难让它完全正确。
如果您的数据是每周一次,并且只有星期一的数据,那么您的日期变量就可以了,如果您使用 tsset
或 [=,您需要做的就是声明 delta(7)
13=]。
如果您的数据是一周两天或更多天,并且您希望 collapse
或 contract
为每周数据,那么您可以像这样转换为合适的时间基准:
* Example generated by -dataex-. To install: ssc install dataex
clear
input float date
22067
22068
22069
22070
22071
22072
22073
22074
22075
22076
22077
22078
22079
22080
end
format %td date
gen wdate = cond(dow(date) == 1, date, cond(dow(date) == 0, date - 6, date - dow(date) + 1))
format wdate %td
gen dow = dow(date)
list, sepby(wdate)
+-----------------------------+
| date dow wdate |
|-----------------------------|
1. | 01jun2020 1 01jun2020 |
2. | 02jun2020 2 01jun2020 |
3. | 03jun2020 3 01jun2020 |
4. | 04jun2020 4 01jun2020 |
5. | 05jun2020 5 01jun2020 |
6. | 06jun2020 6 01jun2020 |
7. | 07jun2020 0 01jun2020 |
|-----------------------------|
8. | 08jun2020 1 08jun2020 |
9. | 09jun2020 2 08jun2020 |
10. | 10jun2020 3 08jun2020 |
11. | 11jun2020 4 08jun2020 |
12. | 12jun2020 5 08jun2020 |
13. | 13jun2020 6 08jun2020 |
14. | 14jun2020 0 08jun2020 |
+-----------------------------+
简而言之,按开始的星期一索引周。现在 collapse
或 contract
您的数据集。当然,如果您有面板数据或纵向数据,也可能涉及一些标识符。 delta(7)
对于任何依赖于 tsset
或 xtset
的东西来说仍然是必不可少的。
使用 egen
映射到连续的整数没有坏处,但也没有任何优势。
这背后的一个主题是 Stata 自己的周是特殊的,总是从 1 月 1 日开始第 1 周,第 52 周总是有 8 或 9 天。有关 Stata 周的更多信息,请参阅论文 here and here ,其中包括此答案中给出的建议等等。