使用SAS我想打印某列中具有最高值的5行

时间:2014-11-20 14:43:19

标签: sas

我有一个包含多个列的数据集。我可以得到像这样的一列或一组列的极端观察......

PROC Univariate data       = Work.tempVal
            nextrobs   = 5 ;
 ods select ExtremeObs ;
 ods output ExtremeObs = ExtremeObs;
            var          B C;

运行;

我想要做的是为每个极端观察打印出数据集行。所以我得到的是我针对极端的列,但我也想要其他列。

2 个答案:

答案 0 :(得分:1)

原来id关键字包含其他列

所以......

 PROC Univariate data       = Work.tempVal
        nextrobs   = 5 ;
 ods select ExtremeObs ;
 ods output ExtremeObs = ExtremeObs;
        var          B;
        id           A C D;
 run;

将返回A,B,C和D列,其中B是极端观察值。

答案 1 :(得分:0)

您可以将proc sqloutobs=选项以及相应的排序顺序一起使用。

例如,要获取前5个最大值的行:

proc sql outobs=5 ;
  create table top5 as
  select *
  from mydata 
  order by targetvar descending ;
quit ;

显然,如果你有多行具有相同的最大值,你可能想要使用不同的方法。