Leçons du module (2/2)
Mutations et Agrégations
En plus de sélectionner et filtrer, dplyr offre de puissantes fonctionnalités pour créer de nouvelles colonnes calculées et pour résumer les données en les agrégeant par groupes.
Créer de Nouvelles Colonnes : mutate()
Le verbe mutate() permet de calculer de nouvelles colonnes ou de modifier des colonnes existantes, tout en conservant intactes les colonnes d'origine.
# Ajoute une colonne 'double_salary' calculée sur la valeur de 'salary'
df %>%
mutate(double_salary = salary * 2)
# Vous pouvez créer plusieurs colonnes en même temps
df %>%
mutate(
total_cost = quantity * price,
tax = total_cost * 0.22
)
Groupement et Agrégation : group_by() et summarise()
L'analyse de données nécessite souvent le calcul de statistiques de résumé (ex. moyenne, somme, nombre d'éléments) pour des groupes de lignes (par exemple, calculer le salaire moyen pour chaque département).
1. group_by()
Regroupe le data frame en fonction des valeurs d'une ou plusieurs colonnes. En soi, cela ne change pas l'aspect visuel des données, mais indique à dplyr que les opérations suivantes devront être exécutées "groupe par groupe".
2. summarise() (ou summarize())
Réduit plusieurs lignes à une seule ligne de résumé en appliquant des fonctions statistiques comme mean(), sum(), min(), max(), ou n() (qui compte le nombre de lignes).
# Calcule le salaire moyen par département
df %>%
group_by(department) %>%
summarise(mean_salary = mean(salary))
Si vous souhaitez compter le nombre d'enregistrements appartenant à chaque groupe :
# Compte le nombre d'employés par ville
df %>%
group_by(city) %>%
summarise(count = n())
À vous de jouer
Exercice 1 : Créer une colonne calculée
Étant donné le data frame df, créez une nouvelle colonne nommée total_price en multipliant la colonne quantity par la colonne price en utilisant mutate(). Sauvegardez le résultat dans df_new.
Afficher l'indice
Utilisez mutate(total_price = quantity * price) au sein d'un pipeline sur df.
Solution disponible après 3 tentatives
Exercice 2 : Regrouper et résumer avec la moyenne
Calculez la moyenne de la colonne salary en regroupant les enregistrements par la colonne department. Sauvegardez la colonne agrégée sous le nom mean_salary et assignez le résultat final à df_grouped.
Afficher l'indice
Utilisez df %>% group_by(department) %>% summarise(mean_salary = mean(salary))
Solution disponible après 3 tentatives
Exercice 3 : Compter les éléments par groupe
Comptez le nombre de lignes pour chaque ville (colonne city). Assignez le décompte à la variable count au sein de summarise() en utilisant la fonction n() et sauvegardez le résultat final dans df_counts.
Afficher l'indice
Combinez group_by(city) et summarise(count = n()) dans un pipeline.
Solution disponible après 3 tentatives
Exercice 4 : Résumés multiples
Calculez la valeur minimale (min_price) et la valeur maximale (max_price) de la colonne price en regroupant par la colonne category. Sauvegardez le résultat dans df_summary.
Afficher l'indice
Au sein de summarise(), séparez les métriques min_price = min(price) et max_price = max(price) par une virgule.
Solution disponible après 3 tentatives
Exercice 5 : Agrégation et filtres combinés
Écrivez un pipeline qui regroupe df par la colonne department, calcule la moyenne de salary en la sauvegardant dans la nouvelle colonne avg_salary en utilisant mutate() (attention : utilisez mutate, pas summarise, pour conserver toutes les lignes), et enfin filtre pour ne garder que les enregistrements avec salary strictement supérieur à avg_salary. Sauvegardez dans res.
Afficher l'indice
Utilisez df %>% group_by(department) %>% mutate(avg_salary = mean(salary)) %>% filter(salary > avg_salary)
Solution disponible après 3 tentatives