5.3 Dati categoriali in R
Consideriamo una variabile che descrive il genere e include le categorie male, female e non-conforming. In R, ci sono due modi per memorizzare queste informazioni. Uno è usare la classe character strings e l’altro è usare la classe factor. Non ci addentrimo qui nelle sottigliezze di questa distinzione, motivata in gran parte per le necessità della programmazione con le funzioni di tidyverse. Per gli scopi di questo insegnamento sarà sufficiente codificare le variabili qualitative usando la classe factor. Una volta codificati i dati qualitativi utilizzando la classe factor, si pongono spesso due problemi:
- modificare le etichette dei livelli (ovvero, le modalità) di un fattore,
- riordinare i livelli di un fattore.
5.3.1 Modificare le etichette dei livelli di un fattore
Esaminiamo l’esempio seguente.
f_1 <- c("old_3", "old_4", "old_1", "old_1", "old_2")
f_1 <- factor(f_1)
y <- 1:5
df <- tibble(f_1, y)
df
#> # A tibble: 5 × 2
#> f_1 y
#> <fct> <int>
#> 1 old_3 1
#> 2 old_4 2
#> 3 old_1 3
#> 4 old_1 4
#> 5 old_2 5
Supponiamo ora di volere che i livelli del fattore f_1 abbiano le etichette new_1, new_2, ecc. Per ottenere questo risultato usiamo la funzione forcats::fct_recode():
5.3.2 Riordinare i livelli di un fattore
Spesso i livelli dei fattori hanno un ordinamento naturale. Quindi, gli utenti devono avere un modo per imporre l’ordine desiderato sulla codifica delle loro variabili qualitative. Se per qualche motivo vogliamo ordinare i livelli f_1 in ordine inverso, ad esempio, possiamo procedere nel modo seguente.
df$f_1 <- factor(df$f_1,
levels = c(
"new_massimo", "new_tanto", "new_medio", "new_poco"
)
)
summary(df$f_1)
#> new_massimo new_tanto new_medio new_poco
#> 1 1 1 2
Per approfondire le problematiche della manipolazione di variabili qualitative in R, si veda McNamara and Horton (2018).