Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 如何在Stata中创建日期序列?_Date_Stata - Fatal编程技术网

Date 如何在Stata中创建日期序列?

Date 如何在Stata中创建日期序列?,date,stata,Date,Stata,我希望在Stata中创建一个日期序列。在这个论坛和其他论坛上的搜索并没有为Stata提供任何有用的代码。有许多关于R的答案,如链接上所示。我想创建一个从2000年1月1日到2010年12月31日的序列。我该怎么做呢?在任何软件中,日期都可能很棘手。在Stata中,与其他任何软件一样,认真阅读文档确实是无可替代的帮助日期和时间回答了大多数问题。Stata中的date()。从Stata 13开始,新用户在查找每日日期时最好使用同义函数daily()。 也就是说,另一个函数在这里更方便地创建日期序列,

我希望在Stata中创建一个日期序列。在这个论坛和其他论坛上的搜索并没有为Stata提供任何有用的代码。有许多关于R的答案,如链接上所示。我想创建一个从2000年1月1日到2010年12月31日的序列。我该怎么做呢?

在任何软件中,日期都可能很棘手。在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中,与其他任何软件一样,认真阅读文档确实是无可替代的<代码>帮助日期和时间
    回答了大多数问题。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