全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2218 12
2012-02-20
分组处理var1,如果组中var2的最后一个值为6,则输出新的数据集new1(否则输出新的数据集new2).用data步怎么编呢?
下面是数据的形式:
Obsvar1var2
1Az
2Ay
3Ax
4At
5Bs
6Bd
7Cf
8Cg
9Ch
二维码

扫码加我 拉你入群

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

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

全部回复
2012-2-20 15:17:09
大家帮帮忙
二维码

扫码加我 拉你入群

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

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

2012-2-20 15:48:59
试试吧,不知道可行:
data new1 new2;
   set new;
   by var1;
   if last.var1 & var2=6 then output new1;
   else output new2;
run;
二维码

扫码加我 拉你入群

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

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

2012-2-20 17:05:54
是分组的,var1中的A为一组,B,C也一样。还是不行啊,不过还是谢谢了
二维码

扫码加我 拉你入群

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

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

2012-2-20 17:12:04
你上面var2不是字符型的么?怎么会有var2=6?
二维码

扫码加我 拉你入群

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

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

2012-2-20 17:15:19
Try this.

data test01;
        input var1 $ var2 $;
cards;
A z
A y
A x
A 6
B s
B d
C f
C g
C h
;run;
data test02;
        set test01;
        fid + 1;
run;
proc sort data = test02;
        by var1 descending fid;
run;
data new1(drop = fid flag)
          new2(drop = fid flag) ;
        retain flag 0;
        set test02;
        by var1;
        if first.var1 and var2 = '6' then flag = 1;
        if flag = 1 then output new1;
        else output new2;
        if last.var1 then flag = 0;
run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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