Vai al contenuto
eLearner.app
Modulo 4 · Lezione 2 di 28/10 nel corso~15 min
Lezioni del modulo (2/2)

Mutazioni e Aggregazioni

Oltre a selezionare e filtrare, dplyr offre potenti funzionalità per creare nuove colonne calcolate e per riassumere i dati aggregandoli in gruppi.


Creare Nuove Colonne: mutate()

Il verbo mutate() consente di calcolare nuove colonne o modificare colonne esistenti, mantenendo intatte le colonne originarie.

Code
# Aggiunge una colonna 'double_salary' calcolata sul valore di 'salary'
df %>%
  mutate(double_salary = salary * 2)

# Puoi creare più colonne contemporaneamente
df %>%
  mutate(
    total_cost = quantity * price,
    tax = total_cost * 0.22
  )

Raggruppamento e Aggregazione: group_by() e summarise()

Spesso l'analisi dei dati richiede il calcolo di statistiche di riepilogo (es. media, somma, conteggio) per gruppi di righe (ad esempio, calcolare lo stipendio medio per ogni dipartimento).

1. group_by()

Raggruppa il data frame in base ai valori di una o più colonne. Di per sé non cambia l'aspetto visivo dei dati, ma indica a dplyr che le operazioni successive dovranno essere eseguite "gruppo per gruppo".

2. summarise() (o summarize())

Riduce molte righe a una singola riga di riepilogo applicando funzioni statistiche come mean(), sum(), min(), max(), o n() (che conta le righe).

Code
# Calcola lo stipendio medio per dipartimento
df %>%
  group_by(department) %>%
  summarise(mean_salary = mean(salary))

Se desideri contare quanti record appartengono a ciascun gruppo:

Code
# Conta quanti dipendenti ci sono per città
df %>%
  group_by(city) %>%
  summarise(count = n())

Prova tu

Esercizio 1: Crea una colonna calcolata

Esercizio#r.m4.l2.e1
Tentativi: 0Caricamento…

Dato il data frame df, crea una nuova colonna chiamata total_price moltiplicando la colonna quantity per la colonna price usando mutate(). Salva il risultato in df_new.

Caricamento editor…
Mostra suggerimento

Usa mutate(total_price = quantity * price) all'interno di una pipeline su df.

Soluzione disponibile dopo 3 tentativi

Esercizio 2: Raggruppa e riassumi con la media

Esercizio#r.m4.l2.e2
Tentativi: 0Caricamento…

Calcola la media della colonna salary raggruppando i record per la colonna department. Salva la colonna aggregata con il nome mean_salary e assegna il risultato finale a df_grouped.

Caricamento editor…
Mostra suggerimento

Usa df %>% group_by(department) %>% summarise(mean_salary = mean(salary))

Soluzione disponibile dopo 3 tentativi

Esercizio 3: Conta elementi per gruppo

Esercizio#r.m4.l2.e3
Tentativi: 0Caricamento…

Conta il numero di righe per ogni città (colonna city). Assegna il conteggio alla variabile count all'interno di summarise() usando la funzione n() e salva il risultato finale in df_counts.

Caricamento editor…
Mostra suggerimento

Combina group_by(city) con summarise(count = n()) in una pipeline.

Soluzione disponibile dopo 3 tentativi

Esercizio 4: Riepiloghi multipli

Esercizio#r.m4.l2.e4
Tentativi: 0Caricamento…

Calcola il valore minimo (min_price) e il valore massimo (max_price) della colonna price raggruppando per la colonna category. Salva il risultato in df_summary.

Caricamento editor…
Mostra suggerimento

All'interno di summarise(), separa le metriche min_price = min(price) e max_price = max(price) con una virgola.

Soluzione disponibile dopo 3 tentativi

Esercizio 5: Aggregazione e filtri combinati

Esercizio#r.m4.l2.e5
Tentativi: 0Caricamento…

Scrivi una pipeline che raggruppi df per la colonna department, calcoli la media di salary salvandola nella nuova colonna avg_salary usando mutate() (attenzione: usa mutate, non summarise, per mantenere tutte le righe), e infine filtri mantenendo solo i record con salary strettamente maggiore di avg_salary. Salva in res.

Caricamento editor…
Mostra suggerimento

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

Soluzione disponibile dopo 3 tentativi