我有一个宽格式的数据框。我想对具有公共存根(在下面的情况中为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),]
请问有人知道最好的方法吗?
答案 0 :(得分:1)
在对do.call
感兴趣的列进行子集设置之后,我们可以将order
与base 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')))