完整指南:如何在 r 中使用 sort()、order() 和 rank()


人们经常混淆的 R 的三个函数是排序排序排名

以下是这些函数之间的区别:

  • sort()将按升序对向量进行排序
  • order()将按排序顺序返回向量的每个元素的索引
  • Rank()将为向量的每个元素分配一个排名(最小 = 1)

以下示例展示了如何在实践中使用这些函数。

示例:对向量使用 sort()、order() 和 Rank()

以下代码演示如何对四值向量使用sort()order()Rank()函数:

 #createvector
x <- c(0, 20, 10, 15)

#sort vector
sort(s)

[1] 0 10 15 20

#order vector
order(s)

[1] 1 3 4 2

#rank vector
rank(x)

[1] 1 4 2 3

以下是每个函数的作用:

1. sort()函数只是将向量值按升序排序。

2. order()函数按排序顺序返回每个元素的索引。

  • 如果你根据这些索引值对原始向量值进行排序,你将得到一个排序向量。
  • 例如,order() 告诉我们首先将值放在索引位置1处——它在原始向量中是 0。
  • 然后 order() 告诉我们将值放在索引位置3处——即原始向量中的 10。
  • 然后 order() 告诉我们将值放在索引位置4处——即原始向量中的 15。
  • 然后 order() 告诉我们将值放在索引位置2处——即原始向量中的 20。
  • 最终结果是一个排序向量 – 0, 10, 15, 20。

3. Rank()函数为向量的每个元素分配一个等级,使用 1 表示最小值。

  • 例如,Rank() 告诉我们原始向量的第一个值是最小的(rank = 1),而原始向量的第二个值是最大的(rank = 4)。

请注意,我们可以使用以下语法以相反的顺序使用sort()order()rank()

 #createvector
x <- c(0, 20, 10, 15)

#sort vector in decreasing order
sort(x, decreasing= TRUE )

[1] 20 15 10 0

#order vector in decreasing order
order(x, decreasing= TRUE )

[1] 2 4 3 1

#rank vector in reverse order (largest value = 1)
rank(-x)

[1] 4 1 3 2

请注意,这些结果与前面示例中产生的结果完全相反。

注意:如何使用 Rank() 函数处理关系

我们可以使用tie.method参数来指定在使用Rank()函数时应如何处理关系:

 rank(x, ties. method = ' average ')

您可以使用以下选项之一来指定如何处理链接:

  • average :(默认)为每个链接的项目分配平均排名(排名第 3 和第 4 的项目都将获得 3.5 的排名)
  • first :将第一个链接元素分配给最低排名(排名第 3 和第 4 位置的元素将分别获得排名 3 和 4)
  • min :将每个链接的项目分配到最低排名(排名第 3 和第 4 的项目都将获得排名 3)
  • max :为每个链接的项目分配最高排名(排名第 3 和第 4 的项目都将获得排名 4)
  • random :为每个并列元素分配一个随机排名(并列第三和第四位置的元素都可以接收任一排名)

根据您的情况,其中一种方法可能比其他方法更有意义。

其他资源

以下教程解释了如何在 R 中执行其他常见操作:

R中如何按多列排序
如何在 R 中按日期对数据框进行排序
如何计算R中的百分位排名

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注