在R中处理并列排名

4

我有一个来自于比赛的竞争对手名单和得分值。很多竞争对手并列并列获得了同样的分数。我需要在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-7的位置)。

我知道这有点违反直觉,但如果有人有任何想法,那将不胜感激。谢谢!

数据

v1 <- setNames(c(4, 5, 2, 7, 7, 7, 7, 9), paste('Competitor', LETTERS[1:8]))
1个回答

6
我们可以使用来自的min_rank
library(dplyr)
min_rank(v1)
#[1] 2 3 1 4 4 4 4 8

或者在基本R中(来自@Steven Beaupré的评论)
rank(v1, ties.method = "min")

数据

v1 <- c(4, 5, 2, 7, 7, 7, 7, 9)

1
或者使用基础的 rank(v1, ties.method = "min") - Steven Beaupré

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