Comment traiter des données ordinales dans R ?

Des données ordinales sont des données textuelles qui ont un lien hierarchique entre elles, c’est à dire qu’elles peuvent être classées dans un ordre du plus petit au plus grand. Il peut s’agir par exemple des tailles de tee-shirt : S, M, L (le S est une taille plus petite que le M, etc).

Pour traiter ces données dans R en définissant le lien hiérarchique, il s’agit d’utiliser les facteurs avec « factor() » dans R. Par defaut, la fonction factor() va prendre toutes les valeurs et créer un facteur avec (donc en acceptant toutes les valeurs transmises). Mais il est possible de définir le facteur plus précisément en définissant les valeurs textuelles qui doivent être acceptées (via levels) et de définir l’ordre entre ces valeurs (via ordered=TRUE qui définit que l’ordre de levels est du plus petit au plus grand).

mesDonnees <- c("fort", "faible", "moyen", "faible", "fort")
monFacteur <- factor(
  mesDonnees,
  levels = c("faible", "moyen", "fort"),
  ordered = TRUE
) 

Si on veut connaitre les valeurs acceptées dans le facteur, il s’agit de faire appel à la fonction levels() :

levels(monFacteur)

Si jamais on définissait une valeur qui n’est pas acceptée (car pas dans « levels »), elle serait alors convertie en valeur nulle :

#Exemple d'une valeur non acceptée (ici "nul" qui deviendra une valeur vide)
mesDonnees <- c("fort", "faible", "moyen", "faible", "fort", "nul")
monFacteur <- factor(
  mesDonnees,
  levels = c("faible", "moyen", "fort"),
  ordered = TRUE
) 

En définissant un ordre hierarchique dans le facteur, cela permet de pouvoir appliquer des tests logiques :

#Exemple de test logique renvoyant TRUE (car "fort" a été défini comme plus grand que "faible")
monFacteur[1] > monFacteur[2]

Pour + d’infos :

https://r-coder.com/factor-r/

https://medium.com/@imanjokko/data-analysis-in-r-series-ii-the-basics-160fba66ac60

0.00 avg. rating (0% score) - 0 votes

Laissez un commentaire

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