Proc Rank-whole数据集

时间:2015-02-24 22:01:03

标签: sas rank

我正在尝试为2个变量创建排名,然后我将总结以创建分数。

问题:我需要对整个数据集进行排名(即进入 k 分位数组,其中 k = n)。

我现在使用proc rank来计算1变量的排名。首先调用变量,我想生成名为firstrank的等级。

    proc rank data = moo  out= outmoo;
      var firstrank;
    run;

我的输出看起来像

                                 Obs   first       firstrank
                                 1     0.000        9.5
                                 2     0.000        9.5
                                 3     0.000        9.5
                                 4     0.000        9.5
                                 5     0.000        9.5
                                 6     0.000        9.5
                                 7     0.000        9.5
                                 8     0.000        9.5
                                 9     0.000        9.5
                                10     0.000        9.5
                                11     0.000        9.5
                                12     0.000        9.5
                                13     0.000        9.5
                                14     0.000        9.5
                                15     0.000        9.5
                                16     0.000        9.5
                                17     0.000        9.5
                                18     0.000        9.5
                                19     0.105       19.5
                                20     0.105       19.5
                                21     0.210       23.5
                                22     0.210       23.5
                                23     0.210       23.5
                                24     0.210       23.5
                                25     0.210       23.5
                                26     0.210       23.5

正如你所看到的那样,排名首先在变量的平均值之间进行平均。

我想要实现的是所有值,其中first = 0,firstrank = 1,first = 0.105,firstrank = 2,依此类推。

有没有办法使用SAS proc rank来做到这一点?或者还有另一个程序要做吗?

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,你需要TIES = DENSE选项(或CONDENSE,它的别名)。请参阅the documentation on PROC RANK

data test;
  do x = 1 to 8;
    do y = 1 to 3;
      output;
    end;
  end;
run;

proc rank data=test out=want ties=dense;
var x;
ranks r;
run;