2012-08-27 60 views
5

,我有以下數據在數據幀:根據特定行中的值對列重新排序。

aa bb cc 
1 3 4 5 
2 5 4 3 
3 7 8 6 
.. 
100 33 63 55 

我需要重新安排基礎上,最後一行中的值的列。這種轉變的結果將是:

bb cc aa 
1 4 5 3 
2 4 3 5 
3 8 6 7 
... 
100 63 55 33 

回答

6
x <- structure(list(aa = c(3L, 5L, 7L, 33L), bb = c(4L, 4L, 8L, 63L), 
    cc = c(5L, 3L, 6L, 55L)), .Names = c("aa", "bb", "cc"), 
    class = "data.frame", row.names = c("1", "2", "3", "100")) 
x[,order(-x[nrow(x),])] 
+0

謝謝,你可以解釋一下-x [nrow ...]在做什麼 – learner

+3

'x [nrow(x),]'返回最後一行......'-x [nrow(x),]'是相反,所以它按你想要的順序排序。你可以用'x [,order(x [nrow(x),],decrease = TRUE)]'來代替,但我更喜歡少打字。 :) –

1

大廈約書亞Ulrich的答案,如果你想通過行名稱進行排序,而不是數:

x[, order(-x[which(rownames(x) == '100'), ]) ] 

其中100是行名,如上例所示。

相關問題