【发布时间】:2017-05-10 15:46:32
【问题描述】:
我正在尝试在多列上排序数据框。并且列名通过变量传递,即字符向量。
df <- data.frame(var1 = c("b","a","b","a"), var2 = c("l","l","k","k"),
var3 = c("t","w","x","t"))
var1 var2 var3
1 b l t
2 a l w
3 b k x
4 a k t
使用变量对一列进行排序
sortvar <- "var1"
df[order(df[ , sortvar]),]
var1 var2 var3
2 a l w
4 a k t
1 b l t
3 b k x
现在,如果我想按两列排序,上面的解决方案不起作用。
sortvar <- c("var1", "var2")
df[order(df[, sortvar]), ] #does not work
我可以用列名手动排序:
df[with(df, order(var1, var2)),]
var1 var2 var3
4 a k t
2 a l w
3 b k x
1 b l t
但是,如何使用具有列名的变量在多列上动态排序数据框?我知道plyr 和dplyr arrange 函数,但我想在这里使用base R。
【问题讨论】: