我只想保留每支队伍中排名最高的行。如果有平局,我想要具有更高rank2的行。然后是更高的等级3。
例如
data test;
input name $ team $ rank1 rank2 rank3 country $
datalines;
Bob A 5 6 5 US
Joe A 8 2 6 UK
Dav B 9 7 2 GER
Jim B 9 4 4 FRA
Bob C 3 4 1 FRA
Dan D 5 2 7 GER
Ike D 5 2 7 US
Jay D 5 2 8 UK
run;
我想要:
Joe A 8 2 6 UK
Dav B 9 7 2 GER
Bob C 3 4 1 FRA
Jay D 5 2 8 UK
最有效的方法是什么?我正在使用的数据集很大,并且没有排序。我尝试了下面的代码,但是这些排序永远需要运行。第二种排序已经排序的数据。如果大多数团队在数据集中只出现一次怎么办?拆分为重复项和非重复项,仅对重复项进行排序然后追加,是否更快?
proc sort data=test;
by team descending rank1 descending rank2 descending rank3;
run;
proc sort data=test nodupkey;
by team;
run;