如果列名存储在向量中,如何按R中的多个列进行排序?

时间:2016-11-17 11:20:39

标签: r sorting

所以我试图整理一些数据,并希望根据几个列安排我的表。所以,如果我有一张桌子

a <- (1:5)
b <- (6:10)
c <- (11:15)
d <- (16:20)
df <- as.data.frame(cbind(a,b,c,d))

我需要按列a排序,然后按列b排序,但我必须从向量中获取这些值。

x <- c(a,b)

目前我正在使用订单或手动安排和插入列名,例如:

df <- arrange(df, a, b)

但理想情况下,我不必手动插入它们,并且能够从矢量中取出它们,这可能会根据某些其他参数而改变。

我试过像

这样的东西
df <- df[,with(df, order(x))]

或者

df <- df[order(df[,1:2]),]

但它一直在弄乱桌子。我使用的数据框非常大,列可能因环境而异,所以我想知道是否可以每次手动插入它们。

谢谢。

1 个答案:

答案 0 :(得分:1)

我们需要vector列名称

x <- names(df)[1:2]

然后使用arrange_

df %>%
   arrange_(x)