stata - 创建周的自定义定义
问题描述
我有每日数据,并希望使用以下定义将它们转换为每周数据。每个星期一表示第 i 周的开始,周日表示第 i 周的结束。
我的日期变量被调用day
并且已经具有%td
格式。我有一种感觉,我应该使用这个dow()
功能,结合egen, group()
但我很难让它完全正确。
解决方案
如果您的数据是每周一次,并且您只有星期一的数据,那么您的日期变量很好,您需要做的就是声明delta(7)
您是否使用tsset
or xtset
。
如果您的数据是每周两天或更多天,并且您希望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
or的东西来说仍然是必不可少的xtset
。
egen
使用映射到连续整数没有害处,但也没有优势。
一个潜在的主题是 Stata 自己的周是特殊的,总是从 1 月 1 日的第 1 周开始,并且在第 52 周总是有 8 或 9 天。有关 Stata 周的更多信息,请参阅此处和此处的论文,其中包括在这个答案,还有更多。
推荐阅读
- docker - 在 docker 中构建 php 事件扩展失败:php_sockets_le_socket:找不到符号
- machine-learning - 存在虚拟变量时如何确定BP网络中隐藏层的节点数
- objective-c - Mojave 上的 NSProgressIndictor 问题
- c# - 试图以窗口服务器上的访问权限禁止的方式访问套接字
- vulkan - Vulkan 是否有等效的 API 来执行 cuEventRecord 和 cuEventQuery?
- dynamics-crm - 从另一方收到不安全或不正确安全的故障。故障代码和细节见内部FaultException
- blockchain - Corda 节点因以下错误而关闭
- sqlite - 在 sqlite 中组合表
- postman - 如何通过 Postman 从 Smartsheet 请求授权码
- c# - 确认邮件后如何授权用户?