2015-04-26 8 views
14

Jeśli mam duże DF (setki) kolumny z różnymi col_names losowo rozmieszczone w kolejności alfabetycznej:dPly: Kolumny zamów alfabetycznie w R

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

Jak bym zamówić wszystkie dane (w pionie) przez COL_NAME alfabetycznie ?

Zasadniczo mam setki plików tekstowych CSV (sep = "|"), które muszę odczytać ich kolumny w jeden plik df, uporządkować je alfabetycznie, a następnie użyć innych funkcji dplyf, aby uzyskać końcowy wynik. Rozumiem to wszystko, z wyjątkiem tego, jak uporządkować kolumny alfabetycznie. Nie chcę sortować kolumn (góra i dół) alfabetem, a raczej rzeczywistą orientację pionową nazw col_ i odpowiadających im danych. Analogicznie do wycinania i wklejania całych kolumn danych w Excelu.

Na przykład Sprawdziliśmy to podejście, ale jest to „sort” rzędy alfabetycznie bitowe, co nie jest to, czego szukam zrobić.

How to sort a dataframe by column(s)?

Dzięki!

+2

prostu zrobić 'df.x [, zamówienie (colnames (df.x))]' –

+0

Brilliant! Zastanawiałem się, czy w grę wchodzi podzbiór. Czy jest to analogiczne do funkcji kopiowania/wycinania w programie Excel? – Zach

Odpowiedz

16

Spróbuj

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

lub po prostu

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

brakująca sekunda ")" poza (df) - ale to była odpowiedź, która zadziałała. Pozdrawiam i @Marat Talipov – Zach

+0

Przepraszamy za literówkę. Będę edytować. – Koundy

+10

Albo po prostu 'df.x%>% select (rzędu (colnames()).)' –

4

Alternatywnym sposobem, aby to zrobić w dplyr jest:

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

current_vars() nazwy kolumn zwroty takie, że są sortable, i select() wykona wektor nazw kolumn.

+1

W tej formie, pojawia się komunikat o błędzie 'Error: Zmienna kontekst nie set'. 'current_vars()' może być przestarzałe? Zastąpienie 'current_vars()' z 'everything()' działa dobrze dla mnie. – lowndrul