1. Learn
  2. /
  3. Courses
  4. /
  5. Wprowadzenie do Spark z pakietem sparklyr w R

Connected

Exercise

Grupowanie – świetne w muzyce i w danych

Częstym zadaniem analitycznym jest obliczanie statystyk podsumowujących dla poszczególnych grup danych. Na przykład możesz chcieć sprawdzić przychody ze sprzedaży według miesiąca lub regionu. W R proces polegający na podziale danych na grupy, zastosowaniu statystyki podsumowującej dla każdej grupy i połączeniu wyników w jedną strukturę danych nosi nazwę „split-apply-combine". Sam koncept jest jednak znacznie starszy – SQL ma instrukcję GROUP BY od dziesięcioleci. Podobnym podejściem jest „map-reduce", gdzie „map" odpowiada mniej więcej etapom „split" i „apply", a „reduce" – etapowi „combine". W dplyr/sparklyr używamy group_by() przed mutate() lub summarize(). Funkcja ta przyjmuje niecytowane nazwy kolumn, według których chcemy grupować. Na przykład, aby obliczyć średnią kolumny x dla każdej kombinacji wartości w kolumnach grp1 i grp2, piszemy:

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

Pamiętaj, że kolumny przekazywane do group_by() powinny zazwyczaj być zmiennymi kategorycznymi. Na przykład obliczanie średniej wagi osób względem ich wzrostu nie ma sensu przy grupowaniu po wzroście, bo każda osoba ma inny wzrost. Można jednak użyć cut(), aby podzielić wzrosty na kategorie i obliczyć średnią wagę dla każdej z nich.

Instructions

100 XP

Połączenie ze Sparkiem zostało już utworzone jako spark_conn. Tibble powiązany z metadanymi utworów przechowywanymi w Sparku jest wstępnie zdefiniowany jako track_metadata_tbl.

  • Zgrupuj zawartość track_metadata według artist_name, a następnie:
    • Oblicz grupową średnią kolumny duration jako nową kolumnę mean_duration.
    • Przypisz wyniki do duration_by_artist.
  • Znajdź artystów z najkrótszymi utworami, sortując wiersze w rosnącej kolejności według mean_duration.
  • Analogicznie znajdź artystów z najdłuższymi utworami, sortując malejąco według mean_duration.