全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6312 9
2012-03-28


具体程序如下,我想先按X分组,然后分别求y的滞后值。也就是说对于不同的x组,y滞后值的第一个值应该是缺失的。但是下面程序的结果往往将上一组的最后一个值作为下一组的第一个值,求正确的程序,谢谢!!

data a;
input x y @@;
datalines;
1 12
1 23
1 34
1 35
1 45
2 34
2 56
2 31
2 32
;
run;
data a;
set a;
lag_y=lag(y);
by x;
run;

运行结果,第6行lag_y值应该缺失,却错误为上一组45
运行结果
二维码

扫码加我 拉你入群

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

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

全部回复
2012-3-28 16:39:01
data a;
set a;
by x;
lag_y=lag(y);
if first.x then lag_y=.;
run;
二维码

扫码加我 拉你入群

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

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

2012-3-28 16:51:38
mymine 发表于 2012-3-28 16:39
data a;
set a;
by x;
多谢指点
那如果求lag2(y)或者更大的滞后(例如lag14(y))呢?
我上边的数据是为说明问题,我正在处理的数据需要更高滞后
二维码

扫码加我 拉你入群

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

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

2012-3-28 17:52:43
复制代码
二维码

扫码加我 拉你入群

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

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

2012-3-28 20:40:51
freerunning_sky 发表于 2012-3-28 17:52
谢谢,此为正解,问题解决了
二维码

扫码加我 拉你入群

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

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

2012-8-8 13:22:52
非常感谢楼上的解答
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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