En analyse de données et en modélisation statistique, toutes les variables ne sont pas purement numériques. Les variables qualitatives ou catégorielles (comme le genre, une catégorie socioprofessionnelle, une mention à un examen ou une région géographique) nécessitent une structure spécifique.
En R, ces variables sont représentées par les facteurs (factors).
Un facteur stocke non seulement les valeurs observées, mais aussi l'ensemble des modalités possibles (appelées levels).
1. Création d'un facteur avec factor()#
Pour convertir un vecteur de texte en facteur, on utilise la fonction factor() :
# Vecteur de texte initial
reponses <- c("Oui", "Non", "Oui", "Oui", "Ne sait pas", "Non")
# Conversion en facteur
f_reponses <- factor(reponses)
# Affichage
print(f_reponses)
Sortie dans la console :
R a automatiquement détecté les modalités distinctes et les a classées par défaut par ordre alphabétique : "Ne sait pas", "Non", "Oui".
Pour inspecter les modalités d'un facteur :
levels(f_reponses) # [1] "Ne sait pas" "Non" "Oui"
nlevels(f_reponses) # Nombre de modalités : [1] 3
2. Compter les effectifs avec table()#
Les facteurs sont particulièrement pratiques pour générer rapidement des tableaux de fréquences :
# Fréquences absolues (effectifs)
table(f_reponses)
# Fréquences relatives (proportions / pourcentages)
prop.table(table(f_reponses)) * 100
3. Facteurs nominaux vs Facteurs ordinaux (Ordered Factors)#
En statistique, on distingue deux types de variables qualitatives :
1. Nominales : Aucune hiérarchie naturelle entre les modalités (ex : "Rouge", "Vert", "Bleu").
2. Ordinales : Il existe une hiérarchie ou un ordre logique évident (ex : "Débutant" < "Intermédiaire" < "Avancé").
Pour créer un facteur ordonné, on spécifie l'argument ordered = TRUE ainsi que l'ordre exact des niveaux souhaité via levels :
niveaux_clients <- c("Argent", "Or", "Bronze", "Or", "Platine", "Argent")
f_niveaux <- factor(
niveaux_clients,
levels = c("Bronze", "Argent", "Or", "Platine"),
ordered = TRUE
)
print(f_niveaux)
Sortie :
Grâce à cet ordre, vous pouvez désormais réaliser des comparaisons logiques :
4. Le piège classique : Convertir un facteur en numérique#
[!WARNING] Le piège des codes internes :
En mémoire, R stocke les facteurs sous forme d'entiers pointant vers les libellés deslevels. Si votre facteur contient des chiffres enregistrés sous forme de texte (ex :"10","20","30"), faire directementas.numeric(f)renverra les indices des modalités (1, 2, 3) et NON les nombres réels !
Mise en pratique#
- Créez un vecteur
satisfactioncontenant 6 réponses :"Bien","Moyen","Très bien","Moyen","Insuffisant","Bien". - Convertissez ce vecteur en un facteur ordinal ordonné du moins satisfait au plus satisfait :
"Insuffisant"<"Moyen"<"Bien"<"Très bien". - Générez le tableau des fréquences absolues et calculez le pourcentage de clients ayant répondu
"Bien"ou"Très bien".
Commentaires