全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1491 1
2018-03-17
数据集的结构是:stkcd    year   id   current     prior
001      2005   1     1
001      2006   1     1         
001      2007   2     0
001      2008   2     0
001      2009   2     0
001      2010   3     1
002      2005   4     0
002      2006   4     0
002      2007   4     0
002      2008   5     1
002      2009   5     1
stkcd是公司编号,id是个人编号;current表示id所对应的一种状态,同一id在所有年份的current都是一样的。

想要解决的问题是,观测同一家公司每个id前面一个id的current状态,并且赋值到prior当中。对于某家公司第一次出现的id,其对应的prior设置为缺失值。也就是使得数据变成:
stkcd    year   id   current  prior
001      2005   1     1         .
001      2006   1     1         .
001      2007   2     0         1
001      2008   2     0         1
001      2009   2     0         1
001      2010   3     1         0
002      2005   4     0         .
002      2006   4     0         .
002      2007   4     0         .
002      2008   5     1         0
002      2009   5     1         0


求助,谢谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2018-3-17 15:24:16
我用的代码是:
data a;
set b;
by stkcd id notsorted;
retain prior;
if first.stkcd and first.id then prior=.;
else
if not(first.stkcd) and first.id then prior=lag(current);
run;

但是跑出来不对,请问有人知道是哪里错了吗?
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群