
Manipulation de données avec dplyr
dplyr est l’un des packages les plus populaires du tidyverse pour la manipulation de données en R. Il fournit une série de verbes qui permettent de filtrer, sélectionner, résumer, regrouper…

Dans une chaîne dplyr, quel verbe doit être placé avant summarize() pour calculer la moyenne du salaire par département ?
Quel verbe dplyr utilise-t-on pour transformer un tableau "wide" en format "long" ?
Quel verbe dplyr permet de créer ou modifier plusieurs colonnes simultanément ?
Quelle fonction dplyr doit-on utiliser pour arrondir toutes les colonnes numériques d'un tableau à deux décimales ?
Quel verbe dplyr utilise-t-on pour extraire les trois salariés les mieux payés d'un tableau ?
Dans un filtre dplyr, quelle syntaxe correcte permet de sélectionner les lignes où la colonne "cyl" est supérieure à 5 et "mpg" inférieure à 20 ?
Quel verbe dplyr doit-on employer pour renommer la colonne "old" en "new" ?
Quel verbe dplyr est le plus approprié pour compter le nombre de lignes dans chaque groupe après un group_by() ?
Introduction à dplyr
dplyr est l’un des packages les plus populaires du tidyverse pour la manipulation de données en R. Il fournit une série de verbes qui permettent de filtrer, sélectionner, résumer, regrouper et transformer les data‑frames de façon lisible et efficace. Dans ce cours, nous allons explorer les verbes essentiels de dplyr à travers des exemples concrets, en s’appuyant sur les questions d’un quiz.
1. Sélectionner des colonnes avec select()
Le verbe select() sert à choisir les colonnes d’un tableau sans toucher aux lignes. C’est l’équivalent de « prendre seulement ces variables ». Par exemple, pour ne garder que les colonnes name et salary :
df %>% select(name, salary)
Cette opération crée un nouveau data‑frame contenant uniquement les deux colonnes demandées. Les autres fonctions comme filter() ou arrange() manipulent les lignes, pas les colonnes.
À retenir : select = choisir colonnes
2. Grouper les données avant de résumer
2.1 Le verbe group_by()
Lorsque l’on veut calculer des statistiques par groupe (par département, par catégorie, etc.), il faut d’abord créer les groupes avec group_by(). Sans cette étape, summarize() agirait sur l’ensemble du tableau.
df %>%
group_by(department) %>%
summarize(mean_salary = mean(salary, na.rm = TRUE))
Le résultat est un tableau où chaque ligne représente un département et la moyenne du salaire correspondante.
À retenir : groupe avant résumé.
3. Transformer le format des données : de "wide" à "long"
Les jeux de données peuvent être présentés sous forme wide (une colonne par variable) ou long (une colonne clé, une colonne valeur). Le passage du format wide au format long se fait avec pivot_longer(), fonction du package tidyr mais souvent utilisée conjointement avec dplyr.
df_wide %>%
pivot_longer(cols = starts_with("score_"),
names_to = "subject",
values_to = "score")
Cette transformation regroupe toutes les colonnes score_math, score_science, etc., en deux colonnes : subject et score.
À retenir : wide → long = pivot_longer(), pas pivot_wider().
4. Créer ou modifier plusieurs colonnes avec mutate()
Le verbe mutate() permet d’ajouter de nouvelles colonnes ou de transformer celles existantes, le tout en une seule opération. On peut y placer plusieurs expressions séparées par des virgules :
df %>%
mutate(
bonus = salary * 0.10,
seniority = if_else(years > 5, "senior", "junior")
)
Chaque nouvelle colonne est calculée à partir des colonnes déjà présentes. C’est l’outil privilégié pour des transformations complexes.
À retenir : mutate() = plusieurs colonnes d’un coup.
5. Appliquer une fonction à plusieurs colonnes avec across()
Lorsque l’on veut appliquer la même opération à un groupe de colonnes, across() est la solution. Par exemple, pour arrondir toutes les colonnes numériques à deux décimales :
df %>%
mutate(across(where(is.numeric), ~ round(.x, 2)))
La fonction where(is.numeric) sélectionne les colonnes de type numérique, et le tilde ~ indique la fonction à appliquer à chaque colonne.
À retenir : across + where(is.numeric) = arrondi global.
6. Extraire les valeurs extrêmes avec slice_max() et slice_min()
Pour obtenir les n plus grandes (ou plus petites) valeurs d’une colonne, dplyr propose les verbes slice_max() et slice_min(). Exemple pour récupérer les trois salariés les mieux payés :
df %>%
slice_max(salary, n = 3)
Cette fonction conserve les lignes contenant les trois plus hauts salaires, même en cas d’égalité.
À retenir : slice_max → top n valeurs.
7. Filtrer les lignes avec des conditions multiples
Le verbe filter() sélectionne les lignes qui satisfont une ou plusieurs conditions. En dplyr, chaque argument séparé par une virgule représente une condition combinée par un ET. Ainsi, pour sélectionner les voitures dont le nombre de cylindres (cyl) est supérieur à 5 et la consommation (mpg) inférieure à 20 :
df %>%
filter(cyl > 5, mpg < 20)
Il n’est pas nécessaire d’utiliser les opérateurs logiques && ou || ; la virgule suffit.
À retenir : Virgule = AND, pas besoin de &&.
8. Renommer une colonne avec rename()
Pour changer le nom d’une colonne sans toucher aux données, on utilise rename(). La syntaxe est new_name = old_name :
df %>%
rename(new = old)
Cette opération est claire et explicite, contrairement à mutate() qui créerait une nouvelle colonne tout en conservant l’ancienne.
À retenir : rename = renommer, pas filtrer.
9. Bonnes pratiques et astuces SEO pour vos scripts dplyr
- Utilisez des pipelines clairs : chaque verbe doit être sur une ligne distincte, cela améliore la lisibilité et le référencement interne de votre code.
- Commentez vos transformations : ajoutez des commentaires
#décrivant le but de chaque étape ; les moteurs de recherche indexent également les commentaires dans les dépôts publics. - Nommez vos variables de façon explicite : des noms comme
mean_salaryoutotal_salescontiennent des mots‑clés pertinents pour le SEO. - Regroupez les fonctions dplyr avec tidyverse : l’utilisation du même style de code (pipe
%>%) crée une cohérence qui favorise le partage et la visibilité sur les plateformes de documentation.
En suivant ces recommandations, vos scripts seront non seulement plus faciles à maintenir, mais aussi plus susceptibles d’apparaître dans les résultats de recherche liés à la manipulation de données avec R.
Conclusion
Ce cours a couvert les verbes fondamentaux de dplyr : select(), filter(), group_by(), summarize(), mutate(), across(), slice_max(), pivot_longer() et rename(). En les maîtrisant, vous serez capable de transformer, résumer et nettoyer vos jeux de données de manière fluide et lisible. N’hésitez pas à pratiquer chaque verbe sur vos propres jeux de données ; la répétition est la clé pour intégrer ces concepts dans votre boîte à outils d’analyse de données.
