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 按组排序