如果我有一个大的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)?
谢谢!
答案 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"