Inizia subitoInizia gratis

I gruppi: fantastici per la musica, fantastici per i dati

Un problema comune nelle analisi è come calcolare statistiche riassuntive per ciascun gruppo di dati. Per esempio, potresti voler conoscere i ricavi mensili, o per area geografica. In R, il processo di suddividere i dati in gruppi, applicare una statistica riassuntiva a ciascun gruppo e combinare i risultati in un’unica struttura è noto come "split-apply-combine". Il concetto è però molto più antico: SQL ha l’istruzione GROUP BY da decenni. Il termine "map-reduce" è un concetto simile, in cui "map" è, molto approssimativamente, analogo ai passaggi di "split" e "apply", e "reduce" corrisponde a "combine". L’approccio dplyr/sparklyr è usare group_by() prima di mutate() o summarize(). Accetta i nomi non quotati delle colonne su cui raggruppare. Per esempio, per calcolare la media della colonna x per ogni combinazione di valori nelle colonne grp1 e grp2, scriveresti quanto segue.

a_tibble %>%
  group_by(grp1, grp2) %>%
  summarize(mean_x = mean(x))

Nota che le colonne passate a group_by() dovrebbero in genere essere variabili categoriche. Per esempio, se volessi calcolare il peso medio delle persone in funzione della loro altezza, non avrebbe senso raggruppare per altezza, dato che l’altezza di ognuno è unica. Potresti però usare cut() per convertire le altezze in categorie e calcolare il peso medio per ciascuna categoria.

Questo esercizio fa parte del corso

Introduzione a Spark con sparklyr in R

Visualizza corso

Istruzioni dell'esercizio

È stata creata per te una connessione Spark come spark_conn. È stato predefinito un tibble collegato ai metadati delle tracce memorizzati in Spark come track_metadata_tbl.

  • Raggruppa il contenuto di track_metadata per artist_name, poi:
    • Riassumi la media per gruppo di duration come nuova colonna mean_duration.
    • Assegna i risultati a duration_by_artist.
  • Trova gli artisti con i brani più brevi ordinando le righe in ordine crescente di mean_duration.
  • Allo stesso modo, trova quelli con i brani più lunghi ordinando in ordine decrescente di mean_duration.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# 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
  ___
Modifica ed esegui il codice