Accéder au contenu principal

Niveaux de facteur dans R

Ce tutoriel reprend des éléments du cours gratuit Intro to R de DataCamp et vous permet de vous exercer avec les facteurs.
Actualisé 19 sept. 2026  · 6 min lire

Explorer avec l’IA

ChatGPTClaudePerplexity

Si vous souhaitez suivre notre cours gratuit Intro to R, voici le lien.

Niveaux de facteur

Quand vous recevez un jeu de données, vous remarquerez souvent qu’il contient des facteurs avec des niveaux bien précis. Toutefois, il vous arrivera de vouloir renommer ces niveaux pour plus de clarté ou pour d’autres raisons. R vous le permet avec la fonction levels() :

levels(factor_vector) <- c("name1", "name2",...)

Un bon exemple est celui des données brutes issues d’une enquête. Une question fréquente dans tout questionnaire concerne le sexe de la personne répondante. Ici, pour simplifier, seules deux catégories ont été relevées, "M" et "F". (En pratique, il faut généralement plus de catégories pour les enquêtes ; dans tous les cas, on utilise un facteur pour stocker ces données catégorielles.)

survey_vector <- c("M", "F", "F", "M", "M")

Noter le sexe avec les abréviations "M" et "F" peut être pratique lors de la collecte sur papier, mais cela peut prêter à confusion à l’analyse. À ce stade, vous souhaiterez souvent remplacer les niveaux du facteur par "Male" et "Female" plutôt que "M" et "F" pour plus de clarté.

Attention : l’ordre dans lequel vous assignez les niveaux est important. Si vous tapez levels(factor_survey_vector), vous verrez que la sortie est [1] "F" "M". Si vous ne précisez pas les niveaux lors de la création du vecteur, R les attribue automatiquement par ordre alphabétique. Pour associer correctement "F" à "Female" et "M" à "Male", fixez les niveaux à c("Female", "Male"), dans cet ordre.

Consignes

  • Examinez le code qui crée un vecteur facteur à partir de survey_vector. Vous utiliserez factor_survey_vector à l’étape suivante.
  • Modifiez les niveaux de factor_survey_vector en c("Female", "Male"). Respectez l’ordre des éléments du vecteur.
# no pec survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) # Code pour construire factor_survey_vector survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) # Spécifiez les niveaux de factor_survey_vector levels(factor_survey_vector) <- factor_survey_vector # Code pour construire factor_survey_vector survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) # Spécifiez les niveaux de factor_survey_vector levels(factor_survey_vector) <- c("Female", "Male") factor_survey_vector msg = "Do not change the definition of survey_vector!" test_object("survey_vector", undefined_msg = msg, incorrect_msg = msg) msg = "Do not change or remove the code to create the factor vector." test_function("factor", "x", not_called_msg = msg, incorrect_msg = msg) # MC-note: ideally would want to test assign operator <-, and have it highlight whole line. # MC-note: or negate this test_student_typed, to highlight where they type this incorrect phrase # test_student_typed('c("Male", "Female")') test_object("factor_survey_vector", eq_condition = "equal", incorrect_msg = paste("Did you assign the correct factor levels to factor_survey_vector? Use levels(factor_survey_vector) <- c(\"Female\", \"Male\"). Remember that R is case sensitive!")) success_msg("Wonderful! Proceed to the next exercise.")

Faites attention à l’ordre dans lequel vous saisissez les niveaux du facteur. Astuce : regardez l’ordre dans lequel les niveaux s’affichent lorsque vous tapez levels(factor_survey_vector).

Résumer un facteur

Une fois ce cours terminé, l’une de vos fonctions préférées dans R sera summary(). Elle offre un aperçu rapide du contenu d’une variable :

summary(my_var)

Revenons à notre enquête : vous souhaitez connaître le nombre de réponses "Male" et le nombre de réponses "Female" dans votre étude. La fonction summary() vous donne la réponse.

Consignes

Demandez un summary() de survey_vector et de factor_survey_vector. Interprétez les résultats des deux vecteurs. Sont-ils tous deux aussi utiles dans ce cas ?

# Construisez factor_survey_vector avec des niveaux propres survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) levels(factor_survey_vector) <- c("Female", "Male") factor_survey_vector # Générez le résumé pour survey_vector # Générez le résumé pour factor_survey_vector # Construisez factor_survey_vector avec des niveaux propres survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) levels(factor_survey_vector) <- c("Female", "Male") factor_survey_vector # Générez le résumé pour survey_vector summary(survey_vector) # Générez le résumé pour factor_survey_vector summary(factor_survey_vector) msg = "Do not change anything about the first few lines that define survey_vector and factor_survey_vector." test_object("survey_vector", undefined_msg = msg, incorrect_msg = msg) test_object("factor_survey_vector", eq_condition = "equal", undefined_msg = msg, incorrect_msg = msg) msg <- "Have you correctly used summary() to generate a summary for %s?" test_output_contains("summary(survey_vector)", incorrect_msg = sprintf(msg, "survey_vector")) test_output_contains("summary(factor_survey_vector)", incorrect_msg = sprintf(msg, "factor_survey_vector")) success_msg("Nice! Have a look at the output. The fact that you identified \"Male\" and \"Female\" as factor levels in factor_survey_vector enables R to show the number of elements for each category.")

Appelez la fonction summary() sur survey_vector et sur factor_survey_vector, tout simplement !

Facteurs ordonnés

Comme "Male" et "Female" sont des niveaux non ordonnés (ou nominaux), R renvoie un avertissement indiquant que l’opérateur « supérieur à » n’a pas de sens. Comme vu précédemment, R attribue une valeur équivalente aux niveaux de tels facteurs.

Mais ce n’est pas toujours le cas ! Parfois, vous manipulerez des facteurs dont les catégories possèdent un ordre naturel. Dans ce cas, il faut s’assurer de transmettre cette information à R…

Supposons que vous dirigiez une équipe de cinq data analysts et que vous souhaitiez évaluer leurs performances. Pour cela, vous suivez leur rapidité, évaluez chaque analyste comme "slow", "medium" ou "fast", et enregistrez les résultats dans speed_vector.

Consignes

Pour commencer, affectez à speed_vector un vecteur de 5 entrées, une par analyste. Chaque entrée doit être soit "slow", "medium" ou "fast". Utilisez la liste ci-dessous :

  • L’analyste 1 est medium,
  • L’analyste 2 est slow,
  • L’analyste 3 est slow,
  • L’analyste 4 est medium et
  • L’analyste 5 est fast.

Inutile d’indiquer qu’il s’agit déjà de facteurs.

# Créez speed_vector speed_vector <- # Créez speed_vector speed_vector <- c("medium", "slow", "slow", "medium", "fast") test_object("speed_vector", incorrect_msg = "speed_vector should be a vector with 5 entries, one for each analyst's speed rating. Don't use capital letters; R is case sensitive!") success_msg("A job well done! Continue to the next exercise.")

Affectez à speed_vector un vecteur contenant les chaînes de caractères "slow", "medium" ou "fast".


Si vous souhaitez aller plus loin avec ce cours, voici le lien.

Découvrez aussi notre Factors in R Tutorial.

Sujets
R
Science des données
Analyse des données

Cours R

Cours

Introduction à R

4 h
3.1M
Maîtrisez les bases de l’analyse de données en R et pratiquez les vecteurs, listes et data frames avec des données réelles.
Afficher les détailsRight Arrow
Commencer Le Cours
Voir plusRight Arrow