【发布时间】:2015-03-24 01:17:55
【问题描述】:
使用SAS 类似的数据集
Ob x year pid grp
1 3.88 2001 1 a
2 2.88 2002 1 a
3 0.13 2004 1 a
4 3.70 2005 1 a
5 1.30 2007 1 a
6 0.95 2001 2 b
7 1.79 2002 2 b
8 1.59 2004 2 b
9 1.29 2005 2 b
10 0.96 2007 2 b
我想买
Ob x year pid grp grp X_F1 XL1
1 3.88 2001 1 a a 2.88 .
2 2.88 2002 1 a a . 3.88
3 0.13 2004 1 a a 3.7 .
4 3.7 2005 1 a a . 0.13
5 1.3 2007 1 a a . .
6 0.95 2001 2 b b 1.79 .
7 1.79 2002 2 b b . 0.95
8 1.59 2004 2 b b 1.29 .
9 1.29 2005 2 b b . 1.59
10 0.96 2007 2 b b . .
在哪里用相同的pid 和每年t 观察,
-
x_F1是x在年份t+1和 中的值
-
x_L1是 x 在年份t-1中的值
在我的数据集中,并非所有pids 都有连续几年的观察结果。
我尝试使用expand proc
proc expand data=have out=want method=none;
by pid; id year;
convert x = x_F1 / transformout=(lead 1);
convert x = x_F2 / transformout=(lead 2);
convert x = x_F3 / transformout=(lead 3);
convert x = x_L1 / transformout=(lag 1);
convert x = x_L2 / transformout=(lag 2);
convert x = x_L3 / transformout=(lag 3);
run;
没有考虑到年份不连续的事实。
【问题讨论】:
-
如果您在调用 PROC EXPAND 之前扩展 have 数据集,以使其具有每个 pid-year 的记录(在适当的情况下缺少 x 值),会有帮助吗?
-
我的数据集有超过 800 万个观察值,如果我想不出更好的方法,我会考虑。