sort()、rank()和order()的区别

9
什么是 R 语言中 sort()、rank() 和 order() 的区别?可以举例说明吗?
1个回答

23

sort() 函数将向量按升序排序。

rank() 函数返回向量中每个数字对应的排名,最小的数字排名为1。

order() 函数返回向量在排序后的索引。

例如:如果我们对向量 c (3, 1, 2, 5, 4) 应用这些函数:

sort(c(3, 1, 2, 5, 4)) 将返回 c(1, 2, 3, 4, 5)

rank(c(3, 1, 2, 5, 4)) 将返回 c(3, 1, 2, 5, 4)

order(c(3, 1, 2, 5, 4)) 将返回 c(2, 3, 1, 5, 4)。如果按照这个顺序排列,将获得排序后的向量。请注意,v[2] = 1、v[3] = 2、v[1] = 3、v[5] = 4 和 v[4] = 5。

R 中还有处理并列的方法。如果运行 rank(c(3, 1, 2, 5, 4, 2)),则会将排名1分配给1,因为有两个2,R将在2和3上进行排名,但将排名2.5分配给每个2,接下来3将获得4.0的排名。

rank(c(3, 1, 2, 5, 4, 2)) 将返回 [4.0 1.0 2.5 6.0 5.0 2.5]

希望这能有所帮助。


2
还值得一提的是 rank 如何处理并列情况。例如,可以检查 rank(c(3, 1, 2, 5, 4, 2)) - Ronak Shah
如果顺序令人困惑,请将其视为使用索引符号对向量进行排序:c(3, 1, 2, 5, 4)[order(c(3, 1, 2, 5, 4))] - Khaynes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接