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).