Ricerca Sociale con R

Una wiki per l'analisi dei dati con R

Strumenti Utente

Strumenti Sito


r:concetti_di_base:fattori

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)

Domande? Scrivimi

su Telegram per email
r/concetti_di_base/fattori.txt · Ultima modifica: 11/08/2025 14:37 da Agnese Vardanega