Przejdź do głównej treści
eLearner.app
Moduł 4 · Lekcja 2 z 28/10 w kursie~15 min
Lekcje modułu (2/2)

Mutacje i Agregacje

Oprócz wyboru i filtrowania, dplyr oferuje potężne funkcjonalności do tworzenia nowych kolumn obliczeniowych oraz podsumowywania danych poprzez ich agregację w grupy.


Tworzenie Nowych Kolumn: mutate()

Czasownik mutate() pozwala na obliczanie nowych kolumn lub modyfikowanie istniejących, zachowując oryginalne kolumny w stanie nienaruszonym.

Code
# Dodaje kolumnę 'double_salary' obliczoną na podstawie wartości 'salary'
df %>%
  mutate(double_salary = salary * 2)

# Możesz tworzyć wiele kolumn jednocześnie
df %>%
  mutate(
    total_cost = quantity * price,
    tax = total_cost * 0.22
  )

Grupowanie i Agregacja: group_by() i summarise()

Często analiza danych wymaga obliczenia statystyk podsumowujących (np. średnia, suma, liczba elementów) dla grup wierszy (na przykład obliczenie średniej pensji dla każdego działu).

1. group_by()

Grupuje ramkę danych na podstawie wartości jednej lub więcej kolumn. Samo w sobie nie zmienia to wizualnego wyglądu danych, ale informuje pakiet dplyr, że kolejne operacje powinny być wykonywane „grupa po grupie”.

2. summarise() (lub summarize())

Redukuje wiele wierszy do pojedynczego wiersza podsumowania poprzez zastosowanie funkcji statystycznych, takich jak mean(), sum(), min(), max() lub n() (która liczy wiersze).

Code
# Oblicza średnią pensję dla każdego działu
df %>%
  group_by(department) %>%
  summarise(mean_salary = mean(salary))

Jeśli chcesz policzyć, ile rekordów należy do każdej grupy:

Code
# Liczy, ilu pracowników przypada na każde miasto
df %>%
  group_by(city) %>%
  summarise(count = n())

Spróbuj sam

Esercizio 1: Tworzenie kolumny obliczeniowej

Ćwiczenie#r.m4.l2.e1
Próby: 0Ładowanie...

Dla danej ramki danych df, utwórz nową kolumnę o nazwie total_price, mnożąc kolumnę quantity przez kolumnę price za pomocą mutate(). Zapisz wynik w df_new.

Ładowanie edytora...
Pokaż wskazówkę

Użyj mutate(total_price = quantity * price) wewnątrz potoku (pipeline) na df.

Rozwiązanie dostępne po 3 próbach

Esercizio 2: Grupowanie i podsumowanie ze średnią

Ćwiczenie#r.m4.l2.e2
Próby: 0Ładowanie...

Oblicz średnią kolumny salary, grupując rekordy według kolumny department. Zapisz zagregowaną kolumnę pod nazwą mean_salary i przypisz ostateczny wynik do df_grouped.

Ładowanie edytora...
Pokaż wskazówkę

Użyj df %>% group_by(department) %>% summarise(mean_salary = mean(salary))

Rozwiązanie dostępne po 3 próbach

Esercizio 3: Liczenie elementów w grupie

Ćwiczenie#r.m4.l2.e3
Próby: 0Ładowanie...

Policz liczbę wierszy dla każdego miasta (kolumna city). Przypisz wynik do zmiennej count wewnątrz summarise() za pomocą funkcji n() i zapisz ostateczny wynik w df_counts.

Ładowanie edytora...
Pokaż wskazówkę

Połącz group_by(city) z summarise(count = n()) w potoku (pipeline).

Rozwiązanie dostępne po 3 próbach

Esercizio 4: Wiele podsumowań

Ćwiczenie#r.m4.l2.e4
Próby: 0Ładowanie...

Oblicz wartość minimalną (min_price) i maksymalną (max_price) kolumny price, grupując według kolumny category. Zapisz wynik w df_summary.

Ładowanie edytora...
Pokaż wskazówkę

Wewnątrz summarise() oddziel metryki min_price = min(price) oraz max_price = max(price) przecinkiem.

Rozwiązanie dostępne po 3 próbach

Esercizio 5: Połączona agregacja i filtry

Ćwiczenie#r.m4.l2.e5
Próby: 0Ładowanie...

Napisz potok (pipeline), który pogrupuje df według kolumny department, obliczy średnią salary, zapisując ją w nowej kolumnie avg_salary przy użyciu mutate() (Uwaga: użyj mutate, a nie summarise, aby zachować wszystkie wiersze), a na koniec przefiltruje, pozostawiając tylko rekordy, w których salary jest ściśle większe niż avg_salary. Zapisz w res.

Ładowanie edytora...
Pokaż wskazówkę

Użyj df %>% group_by(department) %>% mutate(avg_salary = mean(salary)) %>% filter(salary > avg_salary)

Rozwiązanie dostępne po 3 próbach