2015-04-26 55 views
14

Se ho un grande DF (centinaia e centinaia) colonne con diverse col_names distribuiti casualmente in ordine alfabetico:DPLY: colonne di ordine alfabetico in R

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

Come dovrei ordinare tutti i dati (in senso verticale) per nome_col alfabetico ?

In sostanza, ho centinaia di file di testo CSV (sep = "|") che ho bisogno di leggere le loro colonne in un singolo df, ordinare quelle colonne alfabeticamente e quindi utilizzare alcune altre funzioni dplyf per ottenere un risultato finale. Ho capito tutto questo eccetto come ordinare le colonne in ordine alfabetico. Non voglio ordinare le colonne (su e giù) in ordine alfabetico, piuttosto, l'effettivo orientamento verticale dei nomi_col e dei dati corrispondenti. Analogo a tagliare e incollare intere colonne di dati in Excel.

Per esempio ho rivisto questo approccio ma questo è il "sort" delle righe in ordine alfabetico bit, che non è quello che sto cercando di fare.

How to sort a dataframe by column(s)?

Grazie!

+2

semplicemente do 'df.x [, ordine (nomefile (df.x))]' –

+0

Brillante! Mi stavo chiedendo se un sottogruppo sarebbe stato coinvolto. È analogo a una funzione copia/taglia in Excel? – Zach

risposta

16

Prova questa

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

o semplicemente

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

missing second ")" outside of (df) - ma quella era la risposta che funzionava. Tuo e @Marat Talipov – Zach

+0

Ci scusiamo per l'errore di battitura. Modificherò. – Koundy

+10

O semplicemente 'df.x%>% select (ordine (colnames (.)))' –

4

Un modo alternativo per fare questo in dplyr è:

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

current_vars() nomi rendimenti delle colonne in modo tale che sono ordinabile, e select() prenderà il vettore di nomi di colonne.

+1

In questo modulo, viene visualizzato il messaggio di errore 'Errore: contesto variabile non impostato'. 'current_vars()' può essere deprecato? Sostituire 'current_vars()' con 'everything()' funziona bene per me. – lowndrul

Problemi correlati