Aan de slagBegin gratis

Groepen: geweldig voor muziek, geweldig voor data

Een veelvoorkomende analysetaak is het berekenen van samenvattingsstatistieken voor elke groep in je data. Zo wil je misschien je omzet per maand of per regio weten. In R heet het proces waarbij je je data opsplitst in groepen, op elke groep een samenvattingsfunctie toepast en de resultaten samenvoegt tot één datastructuur, "split-apply-combine". Het idee is echter veel ouder: SQL heeft al decennialang de GROUP BY-instructie. De term "map-reduce" is een vergelijkbaar concept, waarbij "map" grofweg overeenkomt met de stappen "split" en "apply", en "reduce" met "combine". De aanpak van dplyr/sparklyr is om group_by() te gebruiken voordat je mutate() of summarize() toepast. Je geeft de niet-geciteerde namen van de kolommen mee waarop je wilt groeperen. Als je bijvoorbeeld het gemiddelde van kolom x wilt berekenen voor elke combinatie van waarden in de kolommen grp1 en grp2, schrijf je het volgende.

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

Let op: de kolommen die je aan group_by() doorgeeft, zijn doorgaans categorische variabelen. Als je bijvoorbeeld het gemiddelde gewicht van mensen ten opzichte van hun lengte wilt berekenen, heeft het geen zin om op lengte te groeperen, omdat ieders lengte uniek is. Je kunt echter wel cut() gebruiken om lengtes in categorieën in te delen en zo het gemiddelde gewicht per categorie te berekenen.

Deze oefening maakt deel uit van de cursus

Introductie tot Spark met sparklyr in R

Bekijk cursus

Oefeninstructies

Er is al een Spark-verbinding voor je gemaakt als spark_conn. Een tibble die is gekoppeld aan de trackmetadata die in Spark is opgeslagen, is vooraf gedefinieerd als track_metadata_tbl.

  • Groepeer de inhoud van track_metadata op artist_name en:
    • Vat het groepsgewijze gemiddelde van duration samen in een nieuwe kolom mean_duration.
    • Ken de resultaten toe aan duration_by_artist.
  • Zoek de artiesten met de kortste nummers door de rijen oplopend te sorteren op mean_duration.
  • Zoek op dezelfde manier de artiesten met de langste nummers door aflopend te sorteren op mean_duration.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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
  ___
Code bewerken en uitvoeren