我有一个问题。我有一个非常大的向量,它的一些值是相等的。我想要得到的是它的值的等级,最大的值是排名#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级?
谢谢!
答案 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
希望能回答你的问题。