我有以下数据存储在数据框中:
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
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),])]
在Joshua Ulrich的回答基础上,如果你想按行名称而不是数字进行排序:
x[, order(-x[which(rownames(x) == '100'), ]) ]
其中 100
是行名,如上面的示例。
x[nrow(x),]
返回最后一行...-x[nrow(x),]
则是相反的,因此它按您想要的顺序进行排序。您也可以使用x[,order(x[nrow(x),],decreasing=TRUE)]
,但我更喜欢打字较少的方法。 :) - Joshua Ulrich