Le guide complet : comment utiliser sort(), order() et Rank() dans R



Trois fonctions de R que les gens confondent souvent sont le tri , l’ordre et le classement .

Voici la différence entre ces fonctions :

  • sort() triera un vecteur par ordre croissant
  • order() renverra l’index de chaque élément d’un vecteur dans l’ordre trié
  • Rank() attribuera un rang à chaque élément d’un vecteur (le plus petit = 1)

L’exemple suivant montre comment utiliser chacune de ces fonctions dans la pratique.

Exemple : utilisez sort(), order() et Rank() avec des vecteurs

Le code suivant montre comment utiliser les fonctions sort() , order() et Rank() avec un vecteur à quatre valeurs :

#create vector
x <- c(0, 20, 10, 15)

#sort vector
sort(x)

[1]  0 10 15 20

#order vector
order(x)

[1] 1 3 4 2

#rank vector
rank(x)

[1] 1 4 2 3

Voici ce que chaque fonction a fait :

1. La fonction sort() triait simplement les valeurs du vecteur par ordre croissant.

2. La fonction order() a renvoyé l’index de chaque élément dans l’ordre trié.

  • Si vous mettez les valeurs du vecteur d’origine dans l’ordre en fonction de ces valeurs d’index, vous obtiendrez un vecteur trié.
  • Par exemple, order() nous dit de mettre d’abord la valeur en position d’index 1 – c’est 0 dans le vecteur d’origine.
  • Ensuite, order() nous dit de mettre ensuite la valeur en position d’index 3 – c’est 10 dans le vecteur d’origine.
  • Ensuite, order() nous dit de mettre ensuite la valeur en position d’index 4 – c’est 15 dans le vecteur d’origine.
  • Ensuite, order() nous dit de mettre ensuite la valeur en position d’index 2 – c’est 20 dans le vecteur d’origine.
  • Le résultat final est un vecteur trié – 0, 10, 15, 20.

3. La fonction Rank() attribuait un rang à chaque élément du vecteur, en utilisant 1 pour la plus petite valeur.

  • Par exemple, Rank() nous indique que la première valeur du vecteur d’origine est la plus petite (rang = 1) et que la deuxième valeur du vecteur d’origine est la plus grande (rang = 4).

Notez que nous pouvons utiliser la syntaxe suivante pour utiliser sort() , order() et rang() dans l’ordre inverse :

#create vector
x <- c(0, 20, 10, 15)

#sort vector in decreasing order
sort(x, decreasing=TRUE)

[1] 20 15 10  0

#order vector in decreasing order
order(x, decreasing=TRUE)

[1] 2 4 3 1

#rank vector in reverse order (largest value = 1)
rank(-x)

[1] 4 1 3 2

Notez que ces résultats sont exactement à l’opposé de ceux produits dans les exemples précédents.

Remarque : Comment gérer les égalités avec la fonction Rank()

Nous pouvons utiliser l’argument tie.method pour spécifier comment nous devons gérer les égalités lors de l’utilisation de la fonction Rank() :

rank(x, ties.method='average')

Vous pouvez utiliser l’une des options suivantes pour spécifier comment gérer les liens :

  • moyenne : (Par défaut) Attribue à chaque élément lié le rang moyen (les éléments classés en 3ème et 4ème position recevraient tous deux un rang de 3,5)
  • premier : Attribue le premier élément lié au rang le plus bas (les éléments classés en 3ème et 4ème positions recevraient respectivement les rangs 3 et 4)
  • min : Assigne chaque élément lié au rang le plus bas (les éléments classés en 3ème et 4ème position recevraient tous deux un rang de 3)
  • max : Attribue à chaque élément lié le rang le plus élevé (les éléments classés en 3ème et 4ème position recevraient tous deux un rang de 4)
  • aléatoire : attribue à chaque élément à égalité un rang aléatoire (l’un ou l’autre des éléments à égalité pour la 3ème et la 4ème position pourrait recevoir l’un ou l’autre rang)

Selon votre scénario, l’une de ces méthodes peut être plus judicieuse à utiliser que les autres.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans R :

Comment trier par plusieurs colonnes dans R
Comment trier une trame de données par date dans R
Comment calculer le rang centile dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *