dply:在R中按字母顺序排列

时间:2015-04-26 03:14:39

标签: r dataframe dplyr

如果我有一个大的DF(数百和数百)列,其中不同的col_names按字母顺序随机分布:

df.x <- data.frame(2:11, 1:10, rnorm(10))
colnames(df.x) <- c("ID", "string", "delta")

我如何按字母顺序按字母顺序排列所有数据(垂直)?

基本上,我有数百个CSV(sep =“|”)文本文件,我需要将它们的列读入单个df,按字母顺序排列这些列,然后使用其他一些dplyf函数来获得最终结果。除了如何按字母顺序排列列之外,我已经解决了所有问题。我不想按字母排序(上下)列,而是col_names的实际垂直方向及其相应的数据。类似于在Excel中剪切和粘贴整列数据。

例如,我回顾了这种方法,但这是按字母顺序对行进行“排序”,这不是我想要做的。

How to sort a dataframe by column(s)?

谢谢!

4 个答案:

答案 0 :(得分:24)

试试这个

df %>% select(noquote(order(colnames(df))))

或只是

df[,order(colnames(df))]

答案 1 :(得分:15)

在dplyr中执行此操作的另一种方法是:

iris %>% 
  select(sort(current_vars()))

current_vars()返回列名,使其可以排序,select()将采用列名称的向量。

答案 2 :(得分:1)

如果特定列(或多个列)必须是第一个(或最后一个),而其余列是有序的,则可以:

mtcars %>% tibble %>% 
  select("hp", sort(colnames(.)))

答案 3 :(得分:0)

为什么不只是:

sort(colnames(df.x))

[1] "delta"  "ID"     "string"