I fattori sono una tipologia di dato peculiare e per quanto simile a semplici characters in realtà sono un tipo di vettore integer con delle proprietà aggiuntive.
Creare un fattore
I fattori si possono creare sia convertendo un vettore character attraverso il comando as.factor() …
char_vect =rep(c("hello","ciao", "hola"), each =2)char_vect
typeof(char_vect) #typeof determines the type or storage mode of any object
[1] "character"
as.integer(char_vect)
[1] NA NA NA NA NA NA
char_vect
[1] "hello" "hello" "ciao" "ciao" "hola" "hola"
I fattori permettono di avere dei livelli levels() come metadati,
levels(my_fact)
[1] "ciao" "hello" "hola"
a prescindere da quali siano effettivamente presenti nel vettore. Per esempio se creo un fattore composto solo dagli elementi di my_fact diversi da ciao:
my_fact2 = my_fact[my_fact!="ciao"]
I livelli di my_fact2 saranno gli stessi di my_fact (ciao incluso) anche se ciao non è presente come osservazione:
my_fact2
[1] hello hello hola hola
Levels: ciao hello hola
levels(my_fact2)
[1] "ciao" "hello" "hola"
E’ possibile però eslcudere i livelli non più utili attraverso il comando droplevels():
# come sarebbe my_fact2 se droppassi i livelli per cui non ci sono osservazioni?droplevels(my_fact2)
[1] hello hello hola hola
Levels: hello hola
# modifico my_fact2 eliminando i livelli inutilimy_fact2 =droplevels(my_fact2) my_fact2
[1] hello hello hola hola
Levels: hello hola
E’ possibile anche rinominare i livelli del fattore…
Ricordate: l’argomento levels dentro la funzione factor() serve a riordinare i livelli del fattore, mentre la funzione levels() serve ad accedere ai nomi dei livelli ed eventualmente rinominarli!