2015-04-26 38 views
14

順序列如果我有一個大的DF(成百上千)不同col_names列隨機的字母順序分配:DPLY:按字母R中

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

我怎麼會由COL_NAME命令所有的數據(垂直)的字母順序?基本上,我有數百個CSV(sep =「|」)文本文件,我需要將它們的列讀入單個df,按字母順序排列這些列,然後使用其他dplyf函數來獲得最終結果。除了如何按字母順序排列列外,我已經想通了所有這些。我不想按字母排列(向上和向下),而是按照col_names的實際垂直方向及其相應的數據進行排序。類似於在Excel中剪切和粘貼整列數據。

例如,我回顧了這種方法,但這是按字母順序「排序」的行,這不是我所期待的。

How to sort a dataframe by column(s)?

謝謝!

+2

只需做'df.x [,命令(colnames(df.x))]' –

+0

太棒了!我想知道是否會涉及一個子集。這類似於Excel中的複製/剪切功能嗎? – Zach

回答

16

試試這個

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

或只是

df[,order(colnames(df))] 
+0

缺少(df)之外的第二個「)」 - 但那是有效的答案。你和@Marat Talipov – Zach

+0

對不起。我將編輯。 – Koundy

+10

或者簡單的'df.x%>%select(order(colnames(。)))' –

4

的另一種方式在dplyr做到這一點是:

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

current_vars()收益的列名,以便他們排序,和select()將採用列名的向量。

+1

在這個表單中,我收到錯誤信息'Error:Variable context not set'。 'current_vars()'可能會被棄用?用'everything()替換'current_vars()'對我來說運行良好。 – lowndrul