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
Ö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_metadataefterartist_name, och sedan:- Sammanfatta det gruppvisa medelvärdet av
durationsom en ny kolumn,mean_duration. - Tilldela resultaten till
duration_by_artist.
- Sammanfatta det gruppvisa medelvärdet av
- 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
___