2014-03-06 32 views
5

我使用R來分析我的masterthesis。不幸的是,我陷入了這個問題:R中多列的每行的排名

我想計算一個新變量,它計算許多變量中每行一個變量的排名。

例子:

V1 V2 V3 NewVariable_V1 NewVariable_V2 NewVariable_V3 
11 21 35 3    2    1 
22 12 66 2    3    1 
44 22 12 1    2    3 

有誰知道該怎麼做? 我很樂意提供幫助。

+0

你想如何處理關係? –

+0

ties.method =「min」 – teeglaze

回答

5

。爲了獲得降序,首先否定data.frame。

data.frame(d, t(apply(-d, 1, rank, ties.method='min'))) 
# V1 V2 V3 V1.1 V2.1 V3.1 
# 1 11 21 35 3 2 1 
# 2 22 12 66 2 3 1 
# 3 44 22 12 1 2 3 
+0

你的方法是合適的。 –

+0

太棒了,像魅力一樣工作!非常感謝! – teeglaze

0

?rank看看如何處理關係。

x <- cbind(a=c(11,22,44), 
     b=c(21,12,22), 
     c=c(35,66,12)) 
> x 
     a b c 
[1,] 11 21 35 
[2,] 22 12 66 
[3,] 44 22 12 

的行

apply(-x, 1, rank) 
    [,1] [,2] [,3] 
a 3 2 1 
b 2 3 2 
c 1 1 3 

排名上你要找的排名列

apply(x, 2, rank) 
    a b c 
[1,] 3 1 3 
[2,] 2 2 1 
[3,] 1 3 2