2017-06-12 18 views
-1

我有个问题。我有一个非常大的矢量,它的一些值是相等的。我想得到的是它的价值等级,最大的价值是排名#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 
[1] 6 1 5 3 3 2 4 

你能帮助我吗?为什么第四名失踪?

谢谢!

回答

2

转换为考量,并返回到数字

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

我们可以dense_rank

library(dplyr) 
dense_rank(-x) 
#[1] 6 1 5 3 3 2 4 
1

你能做什么,如果你不希望任何值跳过做到这一点是这样的:

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

希望能回答你的问题。

相关问题