Indice
Fattori
I fattori come variabili categoriali
I vettori corrispondenti alle Variabili nominali sono di tipo (classe) factor, e sono composti da due array: uno composto di numeri interi (integer), e uno di nomi, le etichette delle modalità. Le modalità sono i livelli (levels) dei fattori.
Da vettore carattere a fattore
Possiamo trasformare in factor
un vettore carattere — nel caso in cui ad esempio le modalità di una variabile nominale siano state codificate ed inserite come stringhe:
#costruisco un vettore carattere: Eta <- c("giovani", "adulti", "anziani", "anziani", "giovani") # eta diventa il fattore eta.classi Eta <- factor(Eta)
Da vettore numerico a fattore
Ma è possibile trasformare in fattore anche un vettore numerico — quando le modalità siano state codificate utilizzando dei numeri.
# costruisco un vettore numerico fattore1 <- c(1, 4, 3, 3, 2) # x diventa un fattore fattore1 <- factor(fattore1) #assegno una etichetta ai livelli del fattore: levels(fattore1) <- c("A","C","D","B")
Possiamo conoscere le caratteristiche di una variabile richiamandola (vedi Recupero delle informazioni), o con il comando class
:
# a che classe appartiene Eta? class(Eta) [1] "factor"
Alle variabili categoriali - ai fattori - è riservato un trattamento adeguato alle loro proprietà formali, tanto nella elaborazione delle statistiche descrittive quanto nella costruzione dei grafici. Sui fattori, ad esempio, R non calcolerà la media aritmetica, e restituirà un messaggio di errore.
mean(Eta) Warning in mean.default(eta.classi) : l'argomento non è numerico o logico: restituisco NA [1] NA
I livelli
Per sapere infine quali livelli prevede una variabile, possiamo usare il comando levels
:
levels(Eta) [1] "adulti" "anziani" "giovani"
I livelli sono organizzati indipendentemente dal contenuto della variabile, come se fossero delle “etichette”. Nel momento cioè in cui si siano assegnati alla variabile eta.classi
tre livelli, anche se nella nostra base di dati dovessero mancare casi classificati come “anziani”, la variabile continuerebbe ad avere tre livelli.
I fattori ordinati
Per indicare il rango delle modalità delle Variabili ordinali, si utilizza un ordered factor:
# assegno un ordine ai livelli di eta.classi Eta <- ordered(Eta, levels = c("giovani", "adulti", "anziani")) levels(Eta) [1] "giovani" "adulti" "anziani" class(Eta) [1] "ordered" "factor" str(Eta) Ord.factor w/ 3 levels "giovani"<"adulti"<..: 1 1 3 2 2 1 2
Anche questa operazione (ordinamento dei fattori) può essere facilmente svolta in RCommander (menu: Dati / Gestione variabili del set di dati attivo
).
Script di esempio
- Esempio Lab3.R
#costruisco un vettore carattere Eta <- c("giovani", "adulti", "anziani", "anziani", "giovani") # eta.classi diventa il fattore eta.classi Eta <- factor(Eta) #costruisco un vettore numerico fattore1 <- c(1, 4, 3, 3, 2) # x diventa un fattore fattore1 <- factor(fattore1) #assegno una etichetta ai livelli del fattore: levels(fattore1) <- c("A","C","D","B") # a che classe appartiene eta.classi? class(Eta) class(fattore1) # cosa c'è in eta.classi? Eta # quali sono i livelli (modalità) di eta.classi levels(Eta) #non posso calcolare la media di un fattore mean(Eta) # assegno un ordine ai livelli di eta.classi Eta <- ordered(Eta, levels = c("giovani", "adulti", "anziani")) levels(Eta) class(Eta) str(Eta)