web-dev-qa-db-fra.com

dply: classer les colonnes par ordre alphabétique dans R

Si j'ai une grande DF (centaines et centaines) colonnes avec différents col_names répartis aléatoirement par ordre alphabétique:

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

Comment puis-je classer toutes les données (verticalement) par nom_col dans l'ordre alphabétique?

Essentiellement, j'ai des centaines de fichiers texte CSV (sep = "|") dont j'ai besoin pour lire leurs colonnes en un seul df, classer ces colonnes par ordre alphabétique, puis utiliser d'autres fonctions dplyf pour obtenir un résultat final. J'ai tout compris, sauf comment classer les colonnes par ordre alphabétique. Je ne veux pas trier les colonnes (de haut en bas) par alphabet, plutôt, l'orientation verticale réelle des col_names et leurs données correspondantes. Analogue à couper et coller des colonnes entières de données dans Excel.

Par exemple, j'ai revu cette approche, mais c'est le "tri" des lignes par ordre alphabétique, ce qui n'est pas ce que je cherche à faire.

Comment trier une trame de données par colonne (s)?

Merci!

29
Zach

Essaye ça

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

ou juste

df[,order(colnames(df))]
29
Koundy

Une autre façon de le faire dans dplyr est:

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

current_vars() retourne les noms de colonne de sorte qu'ils soient triables, et select() prendra le vecteur des noms de colonne.

19
Steph Locke