A:排名函数中tie.method的完整指南


您可以使用基数 R 中的Rank()函数返回向量中值的排名。

该函数使用以下基本语法:

排名(x, na.last=TRUE,ties.method=”平均”)

金子:

  • x :包含要分类的值的向量
  • na.last :如果为 TRUE,则将缺失值放在最后。如果为FALSE,则将缺失值放在第一位。
  • tie.method :如何处理平局(默认为“平均”)

Rank()函数的Ties.method参数指定应如何处理关系。

该参数接受以下选项:

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

以下示例展示了如何在 R 中使用以下数据框来实际使用每个选项:

 #create data frame
df <- data. frame (player=c('A', 'B', 'C', 'D', 'E'),
                 dots=c(5, 8, 10, 10, 17))

#view data frame
df

  player points
1 to 5
2 B 8
3 C 10
4 D 10
5 E 17

示例 1:使用 Rank() 和 Ties.method=”average”

以下代码演示如何创建一个新列,该列使用Rank()Ties.method=”average”来根据点数列的值向每个玩家分配排名:

 #create new column that ranks players based on their points value
df$points_rank = rank(df$points, ties. method = “ average ”)

#view updated data frame
df

  player points points_rank
1 to 5 1.0
2 B 8 2.0
3 C 10 3.5
4 D 10 3.5
5 E 17 5.0

由于选手 C 和 D 的积分相同,并且分在第 3 和第 4 名,因此他们的排名平均值都是: 3.5

示例 2:使用 Rank() 和 Ties.method=”first”

以下代码演示如何创建一个新列,该列使用Rank()Ties.method=”first”来根据点数列的值向每个玩家分配排名:

 #create new column that ranks players based on their points value
df$points_rank = rank(df$points, ties. method = " first ")

#view updated data frame
df

  player points points_rank
1 to 5 1
2 B 8 2
3 C 10 3
4 D 10 4
5 E 17 5

由于玩家 C 和 D 拥有相同的分数并占据位置 3 和 4,因此这两个玩家之间的第一个玩家(玩家“C”)获得最低排名。

示例 3:使用 Rank() 和 Ties.method=”last”

以下代码显示如何创建一个新列,该列使用Rank()Ties.method=”last”来根据点数列的值为每个玩家分配排名:

 #create new column that ranks players based on their points value
df$points_rank = rank(df$points, ties. method = " last ")

#view updated data frame
df

  player points points_rank
1 to 5 1
2 B 8 2
3 C 10 4
4 D 10 3
5 E 17 5

由于玩家 C 和 D 拥有相同的分数并占据位置 3 和 4,因此两者之间的最后一个玩家(玩家“D”)获得最低排名。

示例 4:使用 Rank() 和 Ties.method=”min”

以下代码展示了如何创建一个新列,该列使用Rank()Ties.method=”min”来根据点数列的值为每个玩家分配排名:

 #create new column that ranks players based on their points value
df$points_rank = rank(df$points, ties. method = " min ")

#view updated data frame
df

  player points points_rank
1 to 5 1
2 B 8 2
3 C 10 3
4 D 10 3
5 E 17 5

由于玩家 C 和 D 的积分相同,并且分在第 3 和第 4 位,因此两位玩家都获得了最低排名: 3

示例 5:使用 Rank() 和 Ties.method=”max”

以下代码显示如何创建一个新列,该列使用Rank()Ties.method=”max”来根据点数列的值为每个玩家分配排名:

 #create new column that ranks players based on their points value
df$points_rank = rank(df$points, ties. method = " max ")

#view updated data frame
df

  player points points_rank
1 to 5 1
2 B 8 2
3 C 10 4
4 D 10 4
5 E 17 5

由于玩家 C 和 D 的积分相同,并且分在第 3 和第 4 位置,因此两位玩家都获得了最高排名: 4

示例 6:使用 Rank() 和 Ties.method=”random”

以下代码演示了如何创建一个新列,该列使用Rank()Ties.method=”random”来根据点数列的值向每个玩家分配排名:

 #create new column that ranks players based on their points value
df$points_rank = rank(df$points, ties. method = " random ")

#view updated data frame
df

  player points points_rank
1 to 5 1
2 B 8 2
3 C 10 4
4 D 10 3
5 E 17 5

由于选手 C 和 D 的分数相同,并且分在 3 号和 4 号位置,因此每位选手被随机分配 3 或 4 名。

请注意,当您对tie.method使用“随机”时,分配给每个值的排名可能会在每次运行代码时发生变化。

其他资源

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

如何在 R 中使用 sort()、order() 和 Rank()
如何计算R中的百分位等级
如何使用 dplyr 按组排序

添加评论

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