Skupiny: skvělé pro hudbu i pro data
Častým analytickým úkolem je výpočet souhrnných statistik pro jednotlivé skupiny dat. Možná chceš znát tržby podle měsíce nebo podle regionu. V R se proces rozdělení dat do skupin, aplikace souhrnné statistiky na každou skupinu a sloučení výsledků do jedné datové struktury označuje jako „split-apply-combine". Samotný koncept je ale mnohem starší: SQL má příkaz GROUP BY už desítky let. Pojem „map-reduce" je podobný přístup, kde „map" zhruba odpovídá krokům „split" a „apply" a „reduce" je ekvivalentem „combine". Přístup dplyr/sparklyr spočívá v použití group_by() před voláním mutate() nebo summarize(). Do group_by() předáváš názvy sloupců bez uvozovek. Chceš-li například vypočítat průměr sloupce x pro každou kombinaci hodnot ve sloupcích grp1 a grp2, napíšeš následující.
a_tibble %>%
group_by(grp1, grp2) %>%
summarize(mean_x = mean(x))
Sloupce předávané do group_by() by zpravidla měly být kategorické proměnné. Pokud bys chtěl/a například vypočítat průměrnou váhu lidí v závislosti na jejich výšce, nemá smysl seskupovat přímo podle výšky, protože každý má jinou. Mohl/a bys ale použít cut() pro převod výšek do kategorií a následně vypočítat průměrnou váhu pro každou kategorii.
Toto cvičení je součástí kurzu
Úvod do Sparku se sparklyr v R
Pokyny k cvičení
Spark připojení je pro tebe připraveno jako spark_conn. Tibble napojený na metadata skladeb uložená ve Sparku je předem definován jako track_metadata_tbl.
- Seskup obsah
track_metadatapodleartist_namea:- Vytvořte souhrnný průměr
durationjako nový sloupecmean_duration. - Výsledek ulož do
duration_by_artist.
- Vytvořte souhrnný průměr
- Najdi interprety s nejkratšími skladbami seřazením řádků vzestupně podle
mean_duration. - Stejným způsobem najdi interprety s nejdelšími skladbami seřazením v sestupném pořadí podle
mean_duration.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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
___