有没有办法在面板中生成滞后而不会折叠数据?

时间:2017-02-27 10:56:35

标签: panel stata

我有一个看起来像这样的数据集

State     Year      Policy      other_variables
 a        2000        0               18
 a        2000        0               19
                  .
                  .
                  .
 a        2001        1               86
 a        2001        1               23

每个州和每年的poicy值都是恒定的。但它会因不同的州和不同的年份而发生变化。每个观察的其他变量是不同的。

我想为每个州生成政策价值滞后。但是,我无法使用xtset state year,然后使用L运算符。每个州年组合中都有重复的值。我知道折叠数据集,生成滞后变量然后合并回数据集将起作用。我的问题是有一个简单的方法来做这个操作吗?

1 个答案:

答案 0 :(得分:1)

这可能有所帮助:

clear 
input str1 State     Year      Policy    
 a        2000        0               
 a        2000        0               
 a        2001        1               
 a        2001        1               
 end 

 bysort State (Year) : gen diff = Policy - Policy[_n-1] if Year == Year[_n-1] + 1 
 by State Year: replace diff = diff[_n-1] if missing(diff) 

 list, sepby(State Year) 

     +------------------------------+
     | State   Year   Policy   diff |
     |------------------------------|
  1. |     a   2000        0      . |
  2. |     a   2000        0      . |
     |------------------------------|
  3. |     a   2001        1      1 |
  4. |     a   2001        1      1 |
     +------------------------------+