全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4251 4
2010-02-05
请教大家问题如下:
如何定义变量b为每组code最近的a的非空滞后变量 。例如:

year       code          a               b
1995         1            90             .
1996         1             .              90  
1997         1             .              90
1998         1           100           90
1999         1           120          100
1995         2            70            .
1996         2             .              70  
1997         2             .              70
1998         2             40           70
1999         2             .              40


十分感谢!!
二维码

扫码加我 拉你入群

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

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

全部回复
2010-2-5 05:03:30
this should work

option missing=.;
data test;
input year code a;
datalines;
1995 1 90
1996 1 .
1997 1 .
1998 1 100
1999 1 120
1995 2 70
1996 2 .
1997 2 .
1998 2 40
1999 2 .
;
run;

proc sort data=test;
by code year;
run;

data new (drop=c);
retain b .;
set test;
by code year;
c=lag(a);
if c ne . then b=c;
if first.code then b=.;
run;

proc print data=new;
run;


1# walkinggirl
二维码

扫码加我 拉你入群

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

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

2010-2-5 07:02:59
funnyxuke 发表于 2010-2-5 05:03
this should work

option missing=.;
data test;
input year code a;
datalines;
1995 1 90
1996 1 .
1997 1 .
1998 1 100
1999 1 120
1995 2 70
1996 2 .
1997 2 .
1998 2 40
1999 2 .
;
run;

proc sort data=test;
by code year;
run;

data new (drop=c);
retain b .;
set test;
by code year;
c=lag(a);
if c ne . then b=c;
if first.code then b=.;
run;

proc print data=new;
run;


1# walkinggirl
The new data logic can be simplied as,


data new ;
retain b .;
set test;
by code year;
if first.code then b=.;
output;
if a ne . then b=a;
run;
二维码

扫码加我 拉你入群

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

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

2010-2-5 09:21:47
谢谢楼上的两位!十分感谢!
二维码

扫码加我 拉你入群

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

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

2010-2-5 11:02:38
3# bobguy
学习了,好强......
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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