全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2176 8
2010-02-07
data a;
input id mark sales;
cards;
111   1   999999
222   0   888888
333   0   777777444   1   666666
555   1   555555
666   0   444444
777   0   333333
888   0   222222
999   0   111111
;
run;


数据a已经根据sales由大到小排列好,现在我想把mark=1的观察值和离它最近的下一个mark=0的观察值提取出来,结果就是


id    mark sales
111   1   999999
222   0   888888
444   1   666666
555   1   555555
666   0   444444
777   0   333333


希望能用macro写出来,谢谢呵。。。。。。。


二维码

扫码加我 拉你入群

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

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

全部回复
2010-2-7 04:12:47
godawgs188 发表于 2010-2-7 00:35
data a;
input id mark sales;
cards;
111   1   999999
222   0   888888
333   0   777777444   1   666666
555   1   555555
666   0   444444
777   0   333333
888   0   222222
999   0   111111
;
run;


数据a已经根据sales由大到小排列好,现在我想把mark=1的观察值和离它最近的下一个mark=0的观察值提取出来,结果就是


id    mark sales
111   1   999999
222   0   888888
444   1   666666
555   1   555555
666   0   444444
777   0   333333


希望能用macro写出来,谢谢呵。。。。。。。


According to your rule the record

777   0   333333

Should not be there.
二维码

扫码加我 拉你入群

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

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

2010-2-7 04:31:22
data a;
input id mark sales;
cards;
111   1   999999
222   0   888888
333   0   777777
444   1   666666
555   1   555555
666   0   444444
777   0   333333
888   0   222222
999   0   111111
;
run;

data b;
set a;
if mark=1 or lag(mark)=1 then output;
run;

proc print data=b;
run;


1# godawgs188
二维码

扫码加我 拉你入群

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

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

2010-2-7 04:39:24
离111(mark=1) 最近的下一个mark=0 的观察值是222(mark=0)
同理,
离444(mark=0) 最近的下一个mark=0 的观察值是666(mark=0)
离555(mark=0) 最近的下一个mark=0 的观察值是777(mark=0)
所以,在RESULT里,mark=0 的观察值数应该等于mark=0 的观察值数。
二维码

扫码加我 拉你入群

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

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

2010-2-7 04:39:58
离111(mark=1) 最近的下一个mark=0 的观察值是222(mark=0)
同理,
离444(mark=0) 最近的下一个mark=0 的观察值是666(mark=0)
离555(mark=0) 最近的下一个mark=0 的观察值是777(mark=0)
所以,在RESULT里,mark=0 的观察值数应该等于mark=0 的观察值数。
二维码

扫码加我 拉你入群

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

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

2010-2-7 05:07:02
funnyxuke 发表于 2010-2-7 04:31

data b;
set a;
if mark=1 or lag(mark)=1 then output;
run;

proc print data=b;
run;
好像还是不对。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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