如何快速对具有相同存根名称的多列进行排序?

时间:2019-07-12 16:08:36

标签: r

我有一个宽格式的数据框。我想对具有公共存根(在下面的情况中为x)的变量进行排序,从左向右移动。

    df <- data.frame(
            id = 1:10,
            x1 = rnorm(10,0,1),
            x2 = rnorm(10,0,1),
            x3 = rnorm(10,0,1),
            x4 = rnorm(10,0,1))

我想有效地做到这一点,而不是输入:

attach(df)
df[order(x1,x2,x3,x4),]

请问有人知道最好的方法吗?

1 个答案:

答案 0 :(得分:1)

在对do.call感兴趣的列进行子集设置之后,我们可以将orderbase R一起使用

 nm1 <- grep("^x\\d+$", names(df)) #identify the columns of interest
 df1 <- df[do.call(order, df[nm1]),]

或者我们使用arrange_at中的dplyr

library(dplyr)
df2 <- df %>% 
        arrange_at(vars(starts_with('x')))