将日期扩展到当前范围之外

时间:2017-03-27 21:39:41

标签: time stata

我正在尝试将数据集扩展为包含当前范围之外的日期。

我的数据范围从1992q1到2017q1。每个观察都存在于该较大窗口的一部分内,例如从1993q2到1997q1。

我需要为每个范围创建季度观察以填补缺失的时间。我已经将现有数据扩展到了几个季度。

我无法弄清楚如何做的是添加那些缺少的宿舍。例如,country1可能具有日期1993q2到1997q1。我需要添加1992q1到1993q1和1997q2到2017q1的缺失日期。

1 个答案:

答案 0 :(得分:1)

我希望我想的一个非常简单的类比是这个沙箱数据集显示了您的问题。

clear 
set obs 10 
gen id = cond(_n < 7, 1, 2) 
gen qdate = yq(1992, 1) in 1 
replace qdate = yq(1992, 3) in 7 
bysort id (qdate) : replace qdate = qdate[_n-1] + 1 if missing(qdate) 
format qdate %tq 
list, sepby(id) 

     +-------------+
     | id    qdate |
     |-------------|
  1. |  1   1992q1 |
  2. |  1   1992q2 |
  3. |  1   1992q3 |
  4. |  1   1992q4 |
  5. |  1   1993q1 |
  6. |  1   1993q2 |
     |-------------|
  7. |  2   1992q3 |
  8. |  2   1992q4 |
  9. |  2   1993q1 |
 10. |  2   1993q2 |
     +-------------+

fillin id qdate 
list, sepby(id) 

     +-----------------------+
     | id    qdate   _fillin |
     |-----------------------|
  1. |  1   1992q1         0 |
  2. |  1   1992q2         0 |
  3. |  1   1992q3         0 |
  4. |  1   1992q4         0 |
  5. |  1   1993q1         0 |
  6. |  1   1993q2         0 |
     |-----------------------|
  7. |  2   1992q1         1 |
  8. |  2   1992q2         1 |
  9. |  2   1992q3         0 |
 10. |  2   1992q4         0 |
 11. |  2   1993q1         0 |
 12. |  2   1993q2         0 |
     +-----------------------+

因此。 fillin是确保标识符和时间的所有交叉组合都存在的简单方法。但是,有什么好处呢?虽然在此示例中未显示,但其他变量的值仅作为缺失值而存在。在某些情况下,继续插值是合理的,但通常情况下,您只是使用不完整的面板。

如何找到这样的解决方案?一个好的策略是浏览[D]手册以查看存在哪些基本数据管理命令。