Date 如何在Stata中创建日期序列?
我希望在Stata中创建一个日期序列。在这个论坛和其他论坛上的搜索并没有为Stata提供任何有用的代码。有许多关于R的答案,如链接上所示。我想创建一个从2000年1月1日到2010年12月31日的序列。我该怎么做呢?在任何软件中,日期都可能很棘手。在Stata中,与其他任何软件一样,认真阅读文档确实是无可替代的<代码>帮助日期和时间回答了大多数问题。Stata中的Date 如何在Stata中创建日期序列?,date,stata,Date,Stata,我希望在Stata中创建一个日期序列。在这个论坛和其他论坛上的搜索并没有为Stata提供任何有用的代码。有许多关于R的答案,如链接上所示。我想创建一个从2000年1月1日到2010年12月31日的序列。我该怎么做呢?在任何软件中,日期都可能很棘手。在Stata中,与其他任何软件一样,认真阅读文档确实是无可替代的帮助日期和时间回答了大多数问题。Stata中的date()。从Stata 13开始,新用户在查找每日日期时最好使用同义函数daily()。 也就是说,另一个函数在这里更方便地创建日期序列,
date()。从Stata 13开始,新用户在查找每日日期时最好使用同义函数daily()
。
也就是说,另一个函数在这里更方便地创建日期序列,mdy()
以下是一个例子:
clear
di mdy(1,1,2000)
di mdy(12,31,2010)
di mdy(12,31,2010) - mdy(1,1,2000)
set obs 4018
gen mydate = mdy(12,31,1999) + _n
format mydate %td
list in 1
list in L
注:
mdy()
从指示月、日和年的参数创建每日日期变量
\n
是观察编号,1以上
因此,您需要计算出开始日期和所需的观察次数,然后将所需常数添加到\n
Stata适用于1960年1月1日的每日日期原点,但此解决方案并不取决于您是否知道这一点
另外,在一份现已删除的答复中,@Caty似乎在询问一系列的每月日期。以下是经过编辑的版本:
当我试着这样做的时候,我的约会对象看起来像是2000年1月1日,2000年1月2日。但是
它们应该是每月一次:2000年1月1日,2000年2月1日
如果您有月度数据,那么至少就Stata而言,使用每月第一天的每日日期完全没有必要,也完全没有好处。事实上,通过创建这样一个序列,你可以创建一个间隔27、28、29和30天不等的序列,所以甚至不是一个规则间隔的序列。这些差距将使Stata中的许多分析变得尴尬和不可能。类似的评论也适用于季度。(如果你有几个星期,每天相隔7天的约会是最好的框架,这是另一个故事。)
注:
ym()
通过指示年和月的参数创建月日期变量
\n
是观察编号,1以上
因此,您需要计算出开始日期和所需的观察次数,然后将所需常数添加到\n
Stata使用的是1960年1月开始的每月日期,但此解决方案并不取决于您是否知道这一点
编辑月底的每日序列很容易,有一个技巧,你可能会因为没有立即看到而责备自己。假设我们希望2015年1月底到2016年12月。那么每个月的月末就在下个月初的前一天。没有必要担心不同长度的月份或闰年。斯塔塔知道日历的细节,所以你不必告诉它它们是什么
. clear
. set obs 24
number of observations (_N) was 0, now 24
. gen mdate = ym(2015, 1) + _n
. gen ddate = dofm(mdate) - 1
. format %td ddate
. format %tm mdate
. list
+---------------------+
| mdate ddate |
|---------------------|
1. | 2015m2 31jan2015 |
2. | 2015m3 28feb2015 |
3. | 2015m4 31mar2015 |
4. | 2015m5 30apr2015 |
5. | 2015m6 31may2015 |
|---------------------|
6. | 2015m7 30jun2015 |
7. | 2015m8 31jul2015 |
8. | 2015m9 31aug2015 |
9. | 2015m10 30sep2015 |
10. | 2015m11 31oct2015 |
|---------------------|
11. | 2015m12 30nov2015 |
12. | 2016m1 31dec2015 |
13. | 2016m2 31jan2016 |
14. | 2016m3 29feb2016 |
15. | 2016m4 31mar2016 |
|---------------------|
16. | 2016m5 30apr2016 |
17. | 2016m6 31may2016 |
18. | 2016m7 30jun2016 |
19. | 2016m8 31jul2016 |
20. | 2016m9 31aug2016 |
|---------------------|
21. | 2016m10 30sep2016 |
22. | 2016m11 31oct2016 |
23. | 2016m12 30nov2016 |
24. | 2017m1 31dec2016 |
+---------------------+
在任何软件中,日期都可能很棘手。在Stata中,与其他任何软件一样,认真阅读文档确实是无可替代的<代码>帮助日期和时间
回答了大多数问题。Stata中的date()。从Stata 13开始,新用户在查找每日日期时最好使用同义函数daily()
。
也就是说,另一个函数在这里更方便地创建日期序列,mdy()
以下是一个例子:
clear
di mdy(1,1,2000)
di mdy(12,31,2010)
di mdy(12,31,2010) - mdy(1,1,2000)
set obs 4018
gen mydate = mdy(12,31,1999) + _n
format mydate %td
list in 1
list in L
注:
mdy()
从指示月、日和年的参数创建每日日期变量
\n
是观察编号,1以上
因此,您需要计算出开始日期和所需的观察次数,然后将所需常数添加到\n
Stata适用于1960年1月1日的每日日期原点,但此解决方案并不取决于您是否知道这一点
另外,在一份现已删除的答复中,@Caty似乎在询问一系列的每月日期。以下是经过编辑的版本:
当我试着这样做的时候,我的约会对象看起来像是2000年1月1日,2000年1月2日。但是
它们应该是每月一次:2000年1月1日,2000年2月1日
如果您有月度数据,那么至少就Stata而言,使用每月第一天的每日日期完全没有必要,也完全没有好处。事实上,通过创建这样一个序列,你可以创建一个间隔27、28、29和30天不等的序列,所以甚至不是一个规则间隔的序列。这些差距将使Stata中的许多分析变得尴尬和不可能。类似的评论也适用于季度。(如果你有几个星期,每天相隔7天的约会是最好的框架,这是另一个故事。)
注:
ym()
通过指示年和月的参数创建月日期变量
\n
是观察编号,1以上
因此,您需要计算出开始日期和所需的观察次数,然后将所需常数添加到\n
Stata使用的是1960年1月开始的每月日期,但此解决方案并不取决于您是否知道这一点
编辑月底的每日序列很容易,有一个技巧,你可能会因为没有立即看到而责备自己。假设我们希望2015年1月底到2016年12月。那么每个月的月末就在下个月初的前一天。没有必要担心不同长度的月份或闰年。斯塔塔知道日历的细节,所以你不必告诉它它们是什么
. clear
. set obs 24
number of observations (_N) was 0, now 24
. gen mdate = ym(2015, 1) + _n
. gen ddate = dofm(mdate) - 1
. format %td ddate
. format %tm mdate
. list
+---------------------+
| mdate ddate |
|---------------------|
1. | 2015m2 31jan2015 |
2. | 2015m3 28feb2015 |
3. | 2015m4 31mar2015 |
4. | 2015m5 30apr2015 |
5. | 2015m6 31may2015 |
|---------------------|
6. | 2015m7 30jun2015 |
7. | 2015m8 31jul2015 |
8. | 2015m9 31aug2015 |
9. | 2015m10 30sep2015 |
10. | 2015m11 31oct2015 |
|---------------------|
11. | 2015m12 30nov2015 |
12. | 2016m1 31dec2015 |
13. | 2016m2 31jan2016 |
14. | 2016m3 29feb2016 |
15. | 2016m4 31mar2016 |
|---------------------|
16. | 2016m5 30apr2016 |
17. | 2016m6 31may2016 |
18. | 2016m7 30jun2016 |
19. | 2016m8 31jul2016 |
20. | 2016m9 31aug2016 |
|---------------------|
21. | 2016m10 30sep2016 |
22. | 2016m11 31oct2016 |
23. | 2016m12 30nov2016 |
24. | 2017m1 31dec2016 |
+---------------------+
Stata将日期处理为整数w