当单个标准排序良好时,rank 函数会返回显而易见的结果:
rank(c(2,4,1,3,5))
[1] 2 4 1 3 5
当单个标准具有平局时,排名函数(默认情况下)将平均排名分配给平局:
rank(c(2,4,1,1,5))
[1] 3.0 4.0 1.5 1.5 5.0
rank 函数不允许您根据多个标准进行排序,因此您必须使用其他内容。一种方法是使用匹配和顺序。对于没有关系的单个标准,结果是相同的:
rank(c(2,4,1,3,5))
[1] 2 4 1 3 5
match(1:5, order(c(2,4,1,3,5)))
[1] 2 4 1 3 5
但是,对于具有联系的单个标准,结果会有所不同:
rank(c(2,4,1,4,5))
[1] 2.0 3.5 1.0 3.5 5.0
match(1:5, order(c(2,4,1,4,5)))
[1] 2 3 1 4 5
联系被打破的方式是,被联系的元素保留其原始顺序,而不是被分配相同的等级。显然,当您根据多个标准进行排序时,此功能可以概括:
match(1:5, order(c(2,4,1,4,5),c(10,11,12,11,13)))
[1] 2 3 1 4 5
最后,问题是:是否有一种简单的或内置的方法来计算排名,使用多个标准来保持平局?我已经编写了一个函数来做到这一点,但是对于这样一个基本功能来说,它很丑而且看起来非常复杂......