Kom igångKom igång gratis

Grupper: bra för musik, bra för data

Ett vanligt analysproblem är hur man beräknar sammanfattande statistik för varje grupp i sina data. Du kanske till exempel vill veta din försäljning per månad eller per region. I R kallas processen att dela upp data i grupper, tillämpa en sammanfattande statistik på varje grupp och slå ihop resultaten till en enda datastruktur för "split-apply-combine". Konceptet är dock mycket äldre: SQL har haft GROUP BY-satsen i decennier. Begreppet "map-reduce" bygger på en liknande idé, där "map" ungefär motsvarar stegen "split" och "apply", medan "reduce" motsvarar "combine". I dplyr/sparklyr används group_by() före mutate() eller summarize(). Funktionen tar ocitaterade kolumnnamn som argument för grupperingen. Om du till exempel vill beräkna medelvärdet av kolumnen x för varje kombination av värden i kolumnerna grp1 och grp2, skriver du följande.

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

Observera att kolumnerna som skickas till group_by() vanligtvis bör vara kategoriska variabler. Om du till exempel vill beräkna medelvikten för personer i förhållande till deras längd är det inte meningsfullt att gruppera efter längd, eftersom alla har unik längd. Du kan däremot använda cut() för att dela in längderna i kategorier och sedan beräkna medelvikten för varje kategori.

Den här övningen är en del av kursen

Introduktion till Spark med sparklyr i R

Visa kurs

Övningsinstruktioner

En Spark-anslutning har skapats åt dig som spark_conn. En tibble kopplad till spårmetadata lagrad i Spark är fördefinierad som track_metadata_tbl.

  • Gruppera innehållet i track_metadata efter artist_name, och sedan:
    • Sammanfatta det gruppvisa medelvärdet av duration som en ny kolumn, mean_duration.
    • Tilldela resultaten till duration_by_artist.
  • Hitta artisterna med de kortaste låtarna genom att sortera raderna i stigande ordning efter mean_duration.
  • Hitta på motsvarande sätt de med de längsta låtarna genom att sortera i fallande ordning efter mean_duration.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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
  ___
Redigera och kör kod