R 中的并列排名
Rank with Ties in R
我有一份比赛的参赛者名单和积分值。很多竞争对手都被捆绑了。我需要一种方法在 R 中对它们进行排名,例如,如果四个竞争对手并列第四,输出可能如下所示:
Competitor A: 1
Competitor B: 2
Competitor C: 3
Competitor D: 4
Competitor E: 4
Competitor F: 4
Competitor G: 4
Competitor F: 8
所以平局后的下一个排名不是第 5 位,而是第 8 位(因为有 4 位参赛者占据了 4-7 位)。
我知道这有点违反直觉,但如果有人有任何想法,我们将不胜感激。谢谢!
数据
v1 <- setNames(c(4, 5, 2, 7, 7, 7, 7, 9), paste('Competitor', LETTERS[1:8]))
我们可以使用 dplyr
中的 min_rank
library(dplyr)
min_rank(v1)
#[1] 2 3 1 4 4 4 4 8
或在 base R
中,(来自@Steven Beaupré 的评论)
rank(v1, ties.method = "min")
数据
v1 <- c(4, 5, 2, 7, 7, 7, 7, 9)
我有一份比赛的参赛者名单和积分值。很多竞争对手都被捆绑了。我需要一种方法在 R 中对它们进行排名,例如,如果四个竞争对手并列第四,输出可能如下所示:
Competitor A: 1
Competitor B: 2
Competitor C: 3
Competitor D: 4
Competitor E: 4
Competitor F: 4
Competitor G: 4
Competitor F: 8
所以平局后的下一个排名不是第 5 位,而是第 8 位(因为有 4 位参赛者占据了 4-7 位)。
我知道这有点违反直觉,但如果有人有任何想法,我们将不胜感激。谢谢!
数据
v1 <- setNames(c(4, 5, 2, 7, 7, 7, 7, 9), paste('Competitor', LETTERS[1:8]))
我们可以使用 dplyr
min_rank
library(dplyr)
min_rank(v1)
#[1] 2 3 1 4 4 4 4 8
或在 base R
中,(来自@Steven Beaupré 的评论)
rank(v1, ties.method = "min")
数据
v1 <- c(4, 5, 2, 7, 7, 7, 7, 9)