Les groupes : excellents pour la musique, excellents pour les données
Un problème d’analyse courant consiste à calculer des statistiques récapitulatives pour chaque groupe de données. Par exemple, vous pourriez vouloir connaître votre chiffre d’affaires par mois ou par région. En R, le processus qui consiste à découper vos données en groupes, appliquer une statistique à chaque groupe, puis combiner les résultats en une seule structure de données est connu sous le nom de « split-apply-combine ». Le concept est bien plus ancien : SQL dispose de l’instruction GROUP BY depuis des décennies. Le terme « map-reduce » est une idée similaire, où « map » est très grossièrement analogue aux étapes « split » et « apply », et « reduce » correspond à « combine ». L’approche dplyr/sparklyr consiste à utiliser group_by() avant mutate() ou summarize(). Elle prend les noms non guillemetés des colonnes selon lesquelles regrouper. Par exemple, pour calculer la moyenne de la colonne x pour chaque combinaison de valeurs dans les colonnes grp1 et grp2, vous écririez :
a_tibble %>%
group_by(grp1, grp2) %>%
summarize(mean_x = mean(x))
Notez que les colonnes passées à group_by() devraient généralement être des variables catégorielles. Par exemple, si vous vouliez calculer le poids moyen des personnes en fonction de leur taille, il n’est pas logique de regrouper par taille, puisque chacun a une taille unique. En revanche, vous pourriez utiliser cut() pour convertir les tailles en différentes catégories, puis calculer le poids moyen pour chaque catégorie.
Cet exercice fait partie du cours
Introduction à Spark avec sparklyr en R
Instructions
Une connexion Spark a été créée pour vous sous le nom spark_conn. Un tibble relié aux métadonnées des morceaux stockées dans Spark a été pré‑défini sous le nom track_metadata_tbl.
- Regroupez le contenu de
track_metadataparartist_name, puis :- Résumez la moyenne par groupe de
durationdans une nouvelle colonnemean_duration. - Affectez le résultat à
duration_by_artist.
- Résumez la moyenne par groupe de
- Trouvez les artistes ayant les morceaux les plus courts en triant les lignes par ordre croissant de
mean_duration. - De même, trouvez ceux ayant les morceaux les plus longs en triant par ordre décroissant de
mean_duration.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# track_metadata_tbl has been pre-defined
track_metadata_tbl
duration_by_artist <- track_metadata_tbl %>%
# Group by artist
___ %>%
# Calc mean duration
___
duration_by_artist %>%
# Sort by ascending mean duration
___
duration_by_artist %>%
# Sort by descending mean duration
___