全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
659 4
2022-02-23
悬赏 50 个论坛币 已解决
复制代码
复制代码



如何按照aa、bb、cc第一行是合计,现在根据第一行的x的取值排序,但属于aa、bb、cc的轻、中、重不变。

得到的结果应是
bb bb 8
轻 bb 5
中 bb 3
重 bb 0
cc cc 6
轻 cc 6
中 cc 0
重 cc 0
aa aa 5
轻 aa 3
中 aa 2
重 aa 0

轻中重只是举例,也可能是1级 2级 3 级 4级等等。希望程序能通用,谢谢!



最佳答案

乐天天12300 查看完整内容

proc sort data=aaa; by var2; run; data bbb; set aaa; by var2; retain y; if first.var2 then y=x; run; proc sort data=bbb out=ccc(drop=y); by descending y; run;
二维码

扫码加我 拉你入群

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

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

全部回复
2022-2-23 10:03:03
proc sort data=aaa;
    by var2;
run;

data bbb;
    set aaa;
    by var2;
    retain y;
    if first.var2 then y=x;
run;

proc sort data=bbb out=ccc(drop=y);
    by descending y;
run;
二维码

扫码加我 拉你入群

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

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

2022-2-23 10:04:14
微信截图_20220223100319.png


data aaa;
input var1$ var2$ x;
cards;
aa aa 5
轻 aa 3
中 aa 2
重 aa 0
bb bb 8
轻 bb 5
中 bb 3
重 bb 0
cc cc 6
轻 cc 6
中 cc 0
重 cc 0
;
run;

二维码

扫码加我 拉你入群

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

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

2022-2-23 10:48:31
下面的代码是不是满足要求?

二维码

扫码加我 拉你入群

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

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

2022-2-23 10:49:33
data aaa;
input var1 $ var2 $ x;
cards;
ttl aa 5
l1 aa 3
l2 aa 2
l3 aa 0
ttl bb 8
l1 bb 5
l2 bb 3
l3 bb 0
ttl cc 6
l1 cc 6
l2 cc 0
l3 cc 0
;
run;

proc transpose data=aaa out=bbb;
  by var2;
        id var1;
        var x;
run;

proc sort data=bbb;
  by descending ttl;
run;

data ccc;
  set bbb;
        array level{4} ttl l1 l2 l3;
        do i=1 to 4;
    if ^missing(level{i}) then levelv=level{i};
                varname=vname(level{i});
                output;       
        end;  
        keep var2 varname levelv;
run;

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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