2017-06-12 17 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 

希望能回答你的問題。

相關問題