Salt la conținutul principal
Modulul 4 · Lecția 2 din 28/10 în curs~15 min
Lecții din modul (2/2)

Mutații și agregări

Dincolo de selectare și filtrare, dplyr oferă capabilități puternice de a crea noi coloane calculate și de a rezuma datele prin agregarea lor în grupuri.


Se creează coloane noi: mutate()

Verbul mutate() vă permite să calculați coloane noi sau să le modificați pe cele existente, păstrând în același timp intacte toate coloanele originale.

R
# Adds a 'double_salary' column computed as 'salary' multiplied by 2
df %>%
  mutate(double_salary = salary * 2)

# You can create multiple columns at once
df %>%
  mutate(
    total_cost = quantity * price,
    tax = total_cost * 0.22
  )

Grupare și agregare: group_by() și summarise()

Adesea, analiza datelor necesită calcularea statisticilor rezumative (de exemplu, medie, sumă, număr) pentru anumite grupuri de rânduri (de exemplu, calcularea salariului mediu pentru fiecare departament).

1. group_by()

Grupează cadrul de date după valorile uneia sau mai multor coloane. Prin ea însăși, nu schimbă aspectul vizual al datelor, dar semnalează dplyr că operațiunile ulterioare ar trebui executate „grup cu grup”.

2. summarise() (sau summarize())

Restrânge multe rânduri într-un singur rând de rezumat prin aplicarea de funcții statistice precum mean(), sum(), min(), max() sau mean(), __PROTECTED_INLINE_11_counter_srow.

R
# Calculates the average salary per department
df %>%
  group_by(department) %>%
  summarise(mean_salary = mean(salary))

Dacă doriți să numărați câte înregistrări aparțin fiecărui grup:

R
# Counts how many employees are in each city
df %>%
  group_by(city) %>%
  summarise(count = n())

Încercați-l singur

Exercițiul 1: Creați o coloană calculată

Exercițiu#r.m4.l2.e1
Încercări: 0Se încarcă…

Având în vedere cadrul de date df, creați o nouă coloană numită total_price înmulțind coloana de cantitate cu coloana de preț folosind mutate(). Salvați rezultatul în df_new.

Se încarcă editorul...
Afișează indiciu

Utilizați mutate(total_price = cantitate * preț) în interiorul unei conducte pe df.

Soluție disponibilă după 3 încercări

Exercițiul 2: Grupați și rezumați cu media

Exercițiu#r.m4.l2.e2
Încercări: 0Se încarcă…

Calculați media coloanei de salarii, grupând înregistrările după coloana de departament. Salvați coloana agregată cu numele mean_salary și atribuiți rezultatul final la df_grouped.

Se încarcă editorul...
Afișează indiciu

Usa df %>% group_by(department) %>% sumar (salariu_mediu = mediu(salariu))

Soluție disponibilă după 3 încercări

Exercițiul 3: Numărați elementele pe grup

Exercițiu#r.m4.l2.e3
Încercări: 0Se încarcă…

Numărați numărul de rânduri pentru fiecare oraș (coloana oraș). Atribuiți numărătoarea variabilei de numărare din interiorul summarise() folosind funcția n() și salvați rezultatul final în df_counts.

Se încarcă editorul...
Afișează indiciu

Combinați group_by(city) cu summarise(count = n()) într-o conductă.

Soluție disponibilă după 3 încercări

Exercițiul 4: Rezumate multiple

Exercițiu#r.m4.l2.e4
Încercări: 0Se încarcă…

Calculați valoarea minimă (min_price) și valoarea maximă (max_price) a grupării coloanei de preț după coloana categorie. Salvați rezultatul în df_summary.

Se încarcă editorul...
Afișează indiciu

În interiorul summarise(), separați valorile min_price = min(price) și max_price = max(price) cu o virgulă.

Soluție disponibilă după 3 încercări

Exercițiul 5: Filtre de grupare și combinate

Exercițiu#r.m4.l2.e5
Încercări: 0Se încarcă…

Scrieți o conductă care grupează df după coloana de departament, calculează media salariului salvându-l în noua coloană avg_salary folosind mutate() (Notă: utilizați mutate, nu sumar, pentru a păstra toate rândurile) și, în final, filtrează pentru a păstra numai înregistrări cu salariul strict mai mare decât avg_salary. Salvați în res.

Se încarcă editorul...
Afișează indiciu

Usa df %>% group_by(department) %>% mutate(avg_salary = mean(salary)) %>% filter(salary > avg_salary)

Soluție disponibilă după 3 încercări