2015-04-26 2 views
14

Если у меня есть большие DF (сотни и сотня) столбцы с различным col_names случайным образом распределены по алфавиту:dply: порядок столбцов в алфавитном порядке R

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)?

Спасибо!

+2

просто сделайте 'df.x [, order (colnames (df.x))]' –

+0

Блестящий! Мне было интересно, будет ли подмножество задействовано. Это аналогично функции копирования/вырезания в Excel? – Zach

ответ

16

Попробуйте

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

или просто

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

отсутствует второй ")" вне (df) - но это был ответ, который сработал. Твой и @ Марат Талыпов – 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()' может быть устаревшим? Замена 'current_vars()' на 'everything()' отлично работает для меня. – lowndrul

Смежные вопросы