楼主: 逍遥梦蝶
4667 1

[问答] 生成非平衡面板数据滞后值的问题 [推广有奖]

  • 3关注
  • 18粉丝

院士

7%

还不是VIP/贵宾

-

威望
0
论坛币
17988 个
通用积分
1001.9930
学术水平
111 点
热心指数
117 点
信用等级
87 点
经验
88418 点
帖子
704
精华
0
在线时间
5101 小时
注册时间
2009-5-22
最后登录
2025-12-20

楼主
逍遥梦蝶 发表于 2018-11-28 18:10:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

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


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:非平衡面板数据 平衡面板数据 非平衡面板 时间序列 代码生成

沙发
whymath 发表于 2018-12-1 13:25:14
我认为这是因为变量t存在跳跃。
用sql做一个笛卡尔积,然后在用panel.

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-21 06:13