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

Filtrare e Selezionare Dati

Il Tidyverse è una collezione di pacchetti R progettati per la data science che condividono la stessa filosofia di progettazione e struttura dati. Il pacchetto principale per la manipolazione dei dati in questa suite si chiama dplyr.

dplyr introduce una serie di funzioni ("verbi") che rendono intuitiva la manipolazione di data frame.


L'Operatore Pipe (%>% o |>)

La filosofia del Tidyverse si basa sulla concatenazione delle operazioni. L'operatore pipe %>% (o l'operatore nativo |> introdotto in R 4.1+) prende il risultato di un'espressione e lo passa come primo argomento alla funzione successiva. Questo evita di nidificare continuamente le funzioni o creare troppe variabili temporanee.

Code
# Senza pipe:
filter(select(df, name, age), age > 20)

# Con la pipe:
df %>%
  select(name, age) %>%
  filter(age > 20)

Verbi di dplyr per Filtrare e Selezionare

I tre verbi fondamentali per estrarre informazioni da un data frame sono:

1. select()

Seleziona colonne specifiche del data frame. Puoi elencare i nomi delle colonne che vuoi mantenere o escludere usando il segno -.

Code
# Seleziona le colonne 'name' e 'salary'
select(df, name, salary)

# Rimuovi la colonna 'address'
select(df, -address)

2. filter()

Filtra le righe in base a una o più condizioni logiche.

Code
# Filtra le righe dove age è maggiore di 30
filter(df, age > 30)

# Filtra con condizioni multiple (AND logico)
filter(df, age > 30, department == "HR")

3. arrange()

Ordina le righe in base ai valori di una o più colonne. Di default l'ordinamento è crescente. Per l'ordinamento decrescente si usa desc().

Code
# Ordina per age (crescente)
arrange(df, age)

# Ordina per salary (decrescente)
arrange(df, desc(salary))

Prova tu

Esercizio 1: Seleziona colonne

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

Dato il data frame df, seleziona le colonne name e age usando la funzione select() e salva il risultato in df_selected.

Caricamento editor…
Mostra suggerimento

Usa: df_selected <- select(df, name, age)

Soluzione disponibile dopo 3 tentativi

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

Filtra le righe del data frame df in cui la colonna age è strettamente maggiore di 18, salvando il risultato in df_adults.

Caricamento editor…
Mostra suggerimento

Usa la funzione filter(df, age > 18) e assegna il risultato a df_adults.

Soluzione disponibile dopo 3 tentativi

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

Usa l'operatore pipe %>% per concatenare le operazioni: seleziona prima la colonna name dal data frame df, poi filtra mantenendo solo i record con age > 18. Salva in res.

Caricamento editor…
Mostra suggerimento

Scrivi: res <- df %>% filter(age > 18) %>% select(name)

Soluzione disponibile dopo 3 tentativi

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

Ordina le righe del data frame df in base alla colonna salary in ordine decrescente usando arrange() e desc(). Salva in df_sorted.

Caricamento editor…
Mostra suggerimento

Usa arrange(desc(salary)) all'interno di una pipeline o come argomento diretto.

Soluzione disponibile dopo 3 tentativi

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

Scrivi una pipeline completa su df: filtra i record con department uguale a 'IT', seleziona le colonne name e salary, e ordina il risultato in base a salary (ordine crescente). Salva il risultato finale in res.

Caricamento editor…
Mostra suggerimento

Usa la pipe %>% per concatenare filter(department == 'IT'), select(name, salary), e arrange(salary).

Soluzione disponibile dopo 3 tentativi