Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas 为每组保留最高级别观察的有效方法_Sas - Fatal编程技术网

Sas 为每组保留最高级别观察的有效方法

Sas 为每组保留最高级别观察的有效方法,sas,Sas,我只想为每支球队保留排名最高的那一排。如果打成平局,我希望这一排的分数更高。然后是更高的等级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

我只想为每支球队保留排名最高的那一排。如果打成平局,我希望这一排的分数更高。然后是更高的等级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;

您可以使用PROC SUMMARY来实现这一点。与您已经在做的工作相比,不确定性能

proc summary data=test nway;
   class team;
   output out=ranked(drop=_:) idgroup(max(rank:) out(name rank: country)=);
   run;

请在示例数据中添加领带示例以及该领带记录的预期输出。不太明白你想怎么处理。您必须保留此数据结构吗?使用长数据集比使用宽数据集容易得多。如果所有三个列都有关联,它可以选择任何关联的行。我宁愿保留数据结构。