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

Esplorazione e Aggregazione

R nasce principalmente come ambiente statistico, di conseguenza mette a disposizione numerose funzioni native per analizzare, riassumere e comprendere la distribuzione dei dati in vettori o tabelle.

Funzioni Statistiche di Base

R consente di calcolare con estrema facilità i principali indici di centralità e variabilità su vettori numerici:

  • mean(x): Calcola la media aritmetica degli elementi.
  • median(x): Calcola la mediana (il valore centrale).
  • sd(x): Calcola la deviazione standard (misura della dispersione dei dati).
  • min(x) e max(x): Restituiscono rispettivamente il valore minimo e massimo.
Code
values <- c(10, 12, 15, 18, 20, 22)

avg <- mean(values)
dispersion <- sd(values)

cat("Media:", avg, "- Dev. Std:", round(dispersion, 2), "\n")

Gestione dei Dati Mancanti (NA)

Nel mondo reale, i dataset contengono spesso valori mancanti, rappresentati in R dall'entità speciale NA (Not Available).

Se provi a calcolare la media o qualsiasi altro aggregato su un vettore che contiene anche solo un NA, R restituirà NA come risultato. Per ignorare i valori mancanti, devi passare l'argomento logico na.rm = TRUE (NA remove):

Code
temperatures <- c(18, 21, NA, 24, 19)

# Questo restituirà NA
print(mean(temperatures))

# Questo ignorerà l'NA ed effettuerà il calcolo sui valori validi
print(mean(temperatures, na.rm = TRUE))

Riepilogo Globale con summary()

La funzione summary() è uno strumento potente che fornisce una panoramica statistica completa di un vettore o di un intero Data Frame, mostrando min, primo quartile, mediana, media, terzo quartile e max:

Code
prices <- c(5, 10, 15, 20, 100)
print(summary(prices))

Aggregazione dei Dati con aggregate

Quando si lavora con data frame, è comune voler calcolare statistiche di riepilogo (come la media o la somma) per gruppi o categorie. La funzione aggregate() in R semplifica questo processo:

Code
df <- data.frame(
  department = c("HR", "IT", "HR", "IT"),
  salary = c(3000, 4500, 3200, 4800)
)

# Calcola la media dei salari per dipartimento
avg_salaries <- aggregate(salary ~ department, data = df, FUN = mean)
print(avg_salaries)

La sintassi salary ~ department significa "analizza la variabile salary in base alla variabile department". L'argomento FUN = mean specifica che vogliamo calcolare la media aritmetica di ciascun gruppo.

Filtraggio Avanzato con subset

La funzione subset() fornisce un modo intuitivo ed elegante per estrarre sottoinsiemi di righe e colonne da un data frame, evitando l'uso di parentesi quadre complesse:

Code
employees <- data.frame(
  name = c("Alice", "Bob", "Charlie"),
  age = c(25, 34, 29),
  active = c(TRUE, FALSE, TRUE)
)

# Filtra solo i dipendenti attivi con età superiore a 28
active_employees <- subset(employees, active == TRUE & age > 28)

Prova tu

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

Dato il vettore temperatures, calcola la media e salvala nella variabile mean_temp. Calcola poi la mediana e salvala in median_temp.

Caricamento editor…
Mostra suggerimento

Usa mean_temp <- mean(temperatures) e median_temp <- median(temperatures)

Soluzione disponibile dopo 3 tentativi

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

Dato il vettore scores contenente un valore NA, calcola la deviazione standard del vettore escludendo i valori mancanti, e salvala nella variabile sd_scores.

Caricamento editor…
Mostra suggerimento

Usa la funzione sd() con l'argomento na.rm = TRUE: sd_scores <- sd(scores, na.rm = TRUE)

Soluzione disponibile dopo 3 tentativi

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

Dato il data frame df, ottieni il riepilogo statistico (summary) della colonna values e salvalo nella variabile stats_summary.

Caricamento editor…
Mostra suggerimento

Estrai la colonna usando l'operatore $ e passala a summary(): stats_summary <- summary(df$values)

Soluzione disponibile dopo 3 tentativi

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

Dato il data frame sales, usa la funzione aggregate() per calcolare la somma (FUN = sum) della colonna revenue raggruppata per la colonna region. Salva il risultato nella variabile region_sales.

Caricamento editor…
Mostra suggerimento

Usa: region_sales <- aggregate(revenue ~ region, data = sales, FUN = sum)

Soluzione disponibile dopo 3 tentativi

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

Dato il data frame products, usa la funzione subset() per filtrare solo i prodotti che appartengono alla categoria 'Electronics' (category == 'Electronics') e che hanno un prezzo maggiore di 100 (price > 100). Salva il risultato nella variabile expensive_electronics.

Caricamento editor…
Mostra suggerimento

Usa: expensive_electronics <- subset(products, category == 'Electronics' & price > 100)

Soluzione disponibile dopo 3 tentativi