2012-06-12 56 views
2

我想計算矢量內各指標的排名,e.g:計算向量中每個指標的排名

x <- c(0.82324952352792, 0.11953364405781, 0.588659686036408, 0.41683742380701, 
     0.11452184105292, 0.438547774450853, 0.586471405345947, 0.943002870306373, 
     0.28184655145742, 0.722095313714817) 

calcRank <- function(x){ 
    sorted <- x[order(x)] 
    ranks <- sapply(x, function(x) which(sorted==x)) 
    return(ranks) 
} 

calcRank(x) 

> calcRank(x) 
[1] 9 2 7 4 1 5 6 10 3 8 

有沒有更好的方式來做到這一點?

回答

11

爲什麼不乾脆:

rank(x)  # ..... ? 

# [1] 9 2 7 4 1 5 6 10 3 8 
5

match是你想要什麼:

match(x, sort(x))