首先生成一个模拟的非平衡面板数据。
- data a;
- input i t x;
- datalines;
- 1 2009 1
- 1 2010 2
- 1 2011 3
- 2 2008 4
- 2 2010 5
- 2 2011 6
- 3 2009 7
- 3 2011 8
- 3 2013 9
- ;
- run;
复制代码然后,我尝试用 PROC PANEL 生成变量 X 的滞后一期,二期和三期的值。
- proc sort data=a; by i t; run;
- proc panel data=a;
- id i t;
- lag x(1 2 3) / out=a_lag;
- run;
复制代码但是,这段代码生成的数据文件 a_lag 只是简单地在每个个体上一行的值移到了本行。但是,对于时间序列上不连续的(比如个体 2,从2008年跳到了2010年)我想得到的是 missing value 而不是简单的上一行的值。我想要的数据是如下这样:
- data expect;
- input i t x x_1 x_2 x_3;
- datalines;
- 1 2009 1 . . .
- 1 2010 2 1 . .
- 1 2011 3 2 1 .
- 2 2008 4 . . .
- 2 2010 5 . 4 .
- 2 2011 6 5 . 4
- 3 2009 7 . . .
- 3 2011 8 . 7 .
- 3 2013 9 . 8 .
- ;
- run;
复制代码请问,PROC PANEL 能否实现?如果不能,在尽量不使用 data step 的情况下该怎么实现呢?谢谢。