全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3249 6
2012-04-19
如果有一个数据集要根据a b c三个变量排序;然后如果a b c 有相同值的赋值flag:1、2、3这样依次排序下去。形式类似如下
a b c flag
1 1 1 1
1 1 1 2
1 1 1 3
1 1 2 1
1 1 2 2
1 1 2 3
1 2 2 1
1 2 2 2
1 2 2 3

请问该如何编程?
谢谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2012-4-19 15:48:04
data temp1;
input a $1. b $1. c $1.;
cards;
111
111
111
112
112
112
122
122
122
;
run;
data temp1;
set temp1;
cls=compress(a||'*'||b||'*'||C);
run;
proc sort data=temp1;
by cls;
run;
data temp1;
set temp1;
by cls;
if first.cls then flag=1;
else flag+1;
run;
二维码

扫码加我 拉你入群

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

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

2012-4-19 16:40:14
data work.a;
        input a b c;
        datalines;
1 1 1
1 1 1
1 2 3
1 2 3
1 3 4
1 1 1
1 1 2
1 1 2
1 1 2
1 2 2
1 3 4
1 2 2
1 2 2
;
run;

proc sort data = work.a;
        by a b c;
run;

data work.b;
        set work.a;
        by a b c ;
        if first.c then do;
                flag = 1;
        end;else do;
                flag +1 ;
        end;
run;
二维码

扫码加我 拉你入群

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

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

2012-4-19 21:08:34
楼上的
if first.c 不保险
举例如数据
111
111
111
121
121
122
122
123
二维码

扫码加我 拉你入群

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

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

2012-4-19 21:32:28
mymine 发表于 2012-4-19 21:08
楼上的
if first.c 不保险
举例如数据
他的理解是对的。利用first.x是好的选择。京剧
二维码

扫码加我 拉你入群

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

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

2012-4-20 07:56:48
jingju11 发表于 2012-4-19 21:32
他的理解是对的。利用first.x是好的选择。京剧
后来想想其实 if first.a=1 or first.b=1 or first.c=1 then flag=1; 更简洁

proc sort data=temp1;
by a b c;
run;

data temp1;
set temp1;
by a b c;
if first.a=1 or first.b=1 or first.c=1 then flag=1;
else flag+1;
run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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