CommencerCommencer gratuitement

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

Afficher le cours

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_metadata par artist_name, puis :
    • Résumez la moyenne par groupe de duration dans une nouvelle colonne mean_duration.
    • Affectez le résultat à duration_by_artist.
  • 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
  ___
Modifier et exécuter le code