pour commencer à comprendre comment trier correctement les blocs de données dans R
, nous devons bien sûr d’abord générer un bloc de données à manipuler.
Remarque: l’espacement n’est pas nécessaire, mais il améliore la lisibilité.,
L’exécution de notre script run.R
affiche la liste des vecteurs dans notre trame de données comme prévu, dans l’ordre dans lequel ils ont été saisis:
$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1
la fonction Order
bien que peut-être pas la méthode de tri celui qui est le plus facilement disponible pour toutes les installations de R
, en raison de faire partie du module base
, est la fonction order
.,
la fonctionorder
accepte un certain nombre d’arguments, mais au niveau le plus simple, le premier argument doit être une séquence de valeurs ou de vecteurs logiques.,
par exemple, nous pouvons utiliser order()
pour trier simplement un vecteur de cinq nombres ordonnés aléatoirement avec ce script:
# Create unordered vectorvector = c(2, 5, 1, 3, 4)# Print vectorvector# Sort in ascending ordervector
en exécutant le script, nous voyons la sortie initiale du vecteur non ordonné, suivie de la liste maintenant ordonnée>
$ Rscript run.R 2 5 1 3 4 1 2 3 4 5
tri d’une trame de données par nom de vecteur
avec la fonctionorder()
dans notre ceinture d’outils, nous allons commencer à trier notre trame de données en passant les noms de vecteurs dans la trame de données.,
par exemple, en utilisant notre objet dataframe
précédemment généré, nous pouvons Trier par le vecteur z
en ajoutant le code suivant à notre script:
# Sort by vector name dataframe
e fait est effectivement d’appeler notre objet dataframe
d’origine et de passer le nouvel ordre d’index que nous aimerions avoir., Cet ordre d’index est généré à l’aide de la fonction with()
, qui crée efficacement un nouvel environnement en utilisant les données transmises dans le premier argument avec une expression pour évaluer ces données dans le deuxième argument.
ainsi, nous réévaluons les donnéesdataframe
en utilisant la fonctionorder()
, et nous voulons commander en fonction du vecteurz
dans cette trame de données., Cela renvoie un nouvel ordre d’index pour les valeurs de trame de données, qui est ensuite finalement évalué dans l’of dataframe
, produisant notre nouveau résultat ordonné.
$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1 x y z4 strawberry c 13 banana b 22 orange d 31 apple a 4
par conséquent, nous voyons notre origine non ordonnée de sortie, suivie par une deuxième sortie avec les données triées par colonne z
.
Tri par index de colonne
semblable à la méthode ci-dessus, il est également possible de trier en fonction duindex
numérique d’une colonne dans le bloc de données, plutôt que du nom spécifique.,
au Lieu d’utiliser la balise with()
fonction, on peut tout simplement passer le order()
fonction de notre dataframe
. Nous indiquons que nous voulons trier par la colonne de l’index 1
à l’aide de la balise dataframe
syntaxe, ce qui provoque R
pour retourner les niveaux (noms) de cet indice 1
colonne., En d’autres termes, comme lorsque nous avons passé le nom du vecteur z
ci-dessus, order
trie en fonction des valeurs vectorielles qui se trouvent dans la colonne de l’index 1
:
dataframe ),]
comme prévu, nous obtenons notre sortie normale suivie de la sortie triée dans la première colonne:
$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1 x y z1 apple a 43 banana b 22 orange d 34 strawberry c 1
Tri par plusieurs colonnes
dans certains cas, il peut être souhaité de trier par plusieurs colonnes. Heureusement, c’est très simple avec les méthodes décrites précédemment.,
Pour trier sur plusieurs colonnes à l’aide de vecteur de noms, il suffit d’ajouter des arguments supplémentaires à la balise order()
appel de fonction comme avant:
# Sort by vector name then dataframe
de Même, pour trier sur plusieurs colonnes basé sur l’index de colonne, ajouter des arguments supplémentaires à order()
avec différents indices:
# Sort by column index then dataframe, dataframe ),]
Laisser un commentaire