Trier les colonnes d'un dataframe par nom de colonne
C'est peut-être une question simple, mais je ne sais pas comment faire pour trier les colonnes par ordre alphabétique.
test = data.frame(C = c(0, 2, 4, 7, 8), A = c(4, 2, 4, 7, 8), B = c(1, 3, 8, 3, 2))
# C A B
# 1 0 4 1
# 2 2 2 3
# 3 4 4 8
# 4 7 7 3
# 5 8 8 2
J'aime l'ordre des colonnes de noms de colonne par ordre alphabétique, pour atteindre
# A B C
# 1 4 1 0
# 2 2 3 2
# 3 4 8 4
# 4 7 3 7
# 5 8 2 8
Pour les autres je veux ma propre ordre défini:
# B A C
# 1 4 1 0
# 2 2 3 2
# 3 4 8 4
# 4 7 3 7
# 5 8 2 8
Veuillez noter que mes jeux de données sont énormes, avec 10000 variables. Ainsi, le processus doit être plus automatisée.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
order
sur lenames
, et l'utiliser pour commander les colonnes lors de la subsetting:Pour votre propre ordre défini, vous devrez définir votre propre mappage des noms à la commande. Cela dépendra de la façon dont vous voulez faire cela, mais la permutation quelle que soit la fonction de ce avec
order
au-dessus de votre sortie désirée.Vous pouvez, par exemple, ont un oeil à Commander un bloc de données des lignes en fonction d'une cible vecteur qui spécifie l'ordre souhaité, c'est à dire que vous pouvez
match
votre bloc de donnéesnames
contre une cible vecteur contenant la colonne désirée commande.test[ order(names(test)) ]
names()
vscolnames()
ici?colnames
: il finit par appelernames
pour undata.frame
.À l'aide de la simple fonction suivante de remplacement peut être effectué (mais seulement si le bloc de données n'a pas beaucoup de colonnes):
pour les autres:
Ici obligatoire
dplyr
réponse dans le cas où quelqu'un veut le faire avec le tuyau.de tri sur les noms de colonnes peuvent travailler facilement.
Voici ce que j'ai trouvé un problème similaire avec mon jeu de données.
Tout d'abord, faire ce que James mentionné ci-dessus, c'est à dire
Seconde, utilisez le tout() fonction dplyr pour déplacer des colonnes spécifiques d'intérêt (par exemple, "D", "G", "K") au début de la trame de données, mettre par ordre alphabétique des colonnes après ceux-là.
Si vous ne souhaitez qu'une ou plusieurs colonnes à l'avant et ne se soucient pas de l'ordre du reste:
Similaire à d'autres syntaxe ci-dessus, mais pour l'apprentissage - pouvez-vous le tri par colonne des noms?
Une autre option est d'utiliser
str_sort()
de la bibliothèque stringr, avec l'argumentnumeric = TRUE
str_sort(c("V3", "V1", "V10"), numeric = TRUE)
# [1] V1 V3 V11