如何使用PROC RANK实现无重复排名?替换平局时的平均排名
使用PROC RANK实现连续排名(处理平局)
可以直接通过PROC RANK实现你的需求,无需编写数据步。只需要在PROC RANK语句中添加ties=sequential选项,该选项会让重复值按照它们在原数据集中的出现顺序分配连续的排名,替代默认的平均排名逻辑。
修改后的代码
data have; input x; datalines; 100 200 333 333 ; run; proc rank data=have out=want ties=sequential; var x; ranks x_rank; run;
效果说明
运行上述代码后,输出数据集want中的x_rank列会得到1,2,3,4的连续排名,完全符合你要求的“依次分配3和4”的逻辑。
多变量排名扩展
如果需要对多个变量进行排名,只需在var语句中列出所有目标变量,同时在ranks语句中对应指定每个变量的排名列名即可,示例如下:
proc rank data=have_multi out=want_multi ties=sequential; var x y z; ranks x_rank y_rank z_rank; run;
内容的提问来源于stack exchange,提问作者Robert Penridge
相关产品推荐
相关产品推荐

