全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1310 3
2017-04-29
新手求助SOS,如何求出1行多个变量中前五个最大的值?
例如
_N_      COL1  COL2 COL3 COL4 COL5 COL6 COL7 COL8 COL9 COL10       m1       m2      m3     m4     m5
   1            2       3        1        7      6     5         8      10       9        4          10         9        8         7        6
   2            10     20    50     25     100     55     75      15      95       35        100      95     75       50      35

请教一下大家有没有办法已有COL1-COL10,然后生成m1-m5呢?
用m1=max(COL1-COL10)只能求最大值,不知道第二个次最大到第五个次最大值该怎么办呢~~很忧伤
二维码

扫码加我 拉你入群

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

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

全部回复
2017-4-29 12:38:21
已经用array+循环解决了~~
二维码

扫码加我 拉你入群

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

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

2017-4-29 13:16:37
wer7wer8wer9 发表于 2017-4-29 12:38
已经用array+循环解决了~~
你的问题实质是SAS里一个经典的横向排序。
从效率上来说,array加bubble sort循环比较累人,尤其数据量多的时候不是太经济。
如果你用的是SAS9.2以上版本,最佳性价比应该是用新启用的函数sortN
短短五行就够了:
data result;
set test;  /*这里放原始数据集名字*/
call sortn(of col10 - col1);
drop col6 - col10;
run;

试试吧,用过都说好。。。
二维码

扫码加我 拉你入群

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

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

2017-4-29 14:59:36
foocares 发表于 2017-4-29 13:16
你的问题实质是SAS里一个经典的横向排序。
从效率上来说,array加bubble sort循环比较累人,尤其数据量多 ...
哇,谢谢大神,爱你
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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