具有一些相等值的秩向量

时间:2017-06-12 15:29:33

标签: r

我有一个问题。我有一个非常大的向量,它的一些值是相等的。我想要得到的是它的值的等级,最大的值是排名#1,最小的排名(在下面的排名#6中的例子)。我试过rank(-x, ties.method = "min"),但在我的情况下解决方案不正确。

x <- c(1,10,2,5,5,8,3)
Rank <- rank(-x,ties.method = "min")
Rank
[1] 7 1 6 3 3 2 5

但Rank应该是:

Rank
[1] 6 1 5 3 3 2 4 
你能帮帮我吗?为什么缺少第4级?

谢谢!

3 个答案:

答案 0 :(得分:4)

我们可以使用dense_rank

执行此操作
library(dplyr)
dense_rank(-x)
#[1] 6 1 5 3 3 2 4

答案 1 :(得分:3)

转换为因子并返回数字

as.numeric(as.factor(rank(-x)))
#[1] 6 1 5 3 3 2 4

答案 2 :(得分:1)

如果您不想跳过任何值,您可以做的是:

as.integer(factor(-x))
[1] 6 1 5 3 3 2 4

希望能回答你的问题。