【问题标题】:Proc Rank-whole datasetProc Rank-整个数据集
【发布时间】:2015-02-25 12:18:29
【问题描述】:

我正在尝试为 2 个变量创建排名,然后我会将它们相加以创建一个分数。

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

我现在正在使用 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 来做到这一点?还是有其他 proc 可以做到这一点?

【问题讨论】:

标签: sas rank


【解决方案1】:

如果我理解您的问题,您需要 TIES=DENSE 选项(或 CODENSE,它的别名)。见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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 2015-06-29
    • 2023-04-03
    • 2021-12-01
    • 2014-12-03
    • 2016-01-19
    相关资源
    最近更新 更多