Corso

I factor sono variabili in R che prendono variabili categoriali e memorizzano i dati in livelli. L’uso principale di questa funzione si vede nell’analisi dei dati e, in particolare, nell’analisi statistica. Inoltre, aiuta a ridurre la ridondanza dei dati e a risparmiare molto spazio in memoria.
Nota: Una variabile categoriale è una variabile che assume valori basati su etichette o nomi. Per esempio, il gruppo sanguigno di una persona può essere A, B, AB o O.
funzione factor
Uso: Categorizzare dati con un numero ridotto di valori.
Parametri: factor(v): v può essere un vettore di valori.
Vediamo un esempio di factor in azione.
Qui sotto trovi il codice con due variabili categoriali, ovvero "Male" e "Female", chiamati anche valori del factor.
gender <- c("Male","Female","Female","Male","Female")
Creiamo un factor per gender usando 'factor(gender)' e salviamolo in una variabile chiamata 'gender.factor'.
gender.factor <- factor(gender)
gender.factor
- Male
- Female
- Female
- Male
- Female
Livelli:
- 'Female'
- 'Male'
Il codice sopra fornisce il seguente output:
Male Female Female Male Female
Levels:
'Female' 'Male'
Come puoi vedere, i valori sono stampati come nel vettore di input. Inoltre, i 'Levels', ossia 'Female' e 'Male', sono ordinati alfabeticamente.
Struttura della funzione factor
Esaminiamo la struttura della funzione factor usando 'str(gender.factor)' nel codice seguente.
str(gender.factor)
Factor w/ 2 levels "Female","Male": 2 1 1 2 1
Factor w/ 2 levels "Female","Male": 2 1 1 2 1
L’output mostra che c’è un factor con 2 livelli. factor converte il vettore di caratteri gender in un vettore di valori interi. "Female" è il primo livello codificato come 1, mentre "Male" è il secondo livello, codificato come 2.
Lo scopo principale della codifica da carattere a numerico è che le categorie possono ripetersi, rendendo ridondanti i dati e occupando molta memoria. Usare i factor riduce questo carico e fa risparmiare spazio in memoria.
Modificare l’ordine dei livelli
Cambiamo l’ordine dei livelli, così "Female" diventa 2 e "Male" 1.
Creiamo un nuovo factor per gender cambiando i livelli di "Male" e "Female" passandoli come input vettoriale a "levels". Infine, salviamo l’output risultante nella variabile chiamata "gender.factor2".
gender.factor2 <- factor(gender,levels=c("Male","Female"))
gender.factor2
str(gender.factor2)
- Male
- Female
- Female
- Male
- Female
Livelli:
- 'Male'
- 'Female'
Factor w/ 2 levels "Male","Female": 1 2 2 1 2
'gender.factor2' viene stampato insieme alla sua struttura tramite 'str(gender.factor2)', dove si possono vedere le seguenti modifiche.
Male Female Female Male Female
Levels:
'Male' 'Female'
Factor w/ 2 levels "Male","Female": 1 2 2 1 2
Il codice sopra mostra un output in cui la codifica di "Male" è 1 e quella di "Female" è 2. È diverso da 'gender.factor', dove era l’opposto.
Rinominare i livelli di un factor
Cambiamo il nome dei valori del vettore in input specificando l’uso di 'levels' come primo argomento con i valori "Male" e "Female" e i valori attesi rinominati usando 'labels' come secondo argomento con "Gen_Male" e "Gen_Female" rispettivamente.
factor(gender,levels = c("Male","Female"),labels = c("Gen_Male","Gen_Female"))
- Gen_Male
- Gen_Female
- Gen_Female
- Gen_Male
- Gen_Female
Livelli:
- 'Gen_Male'
- 'Gen_Female'
Gen_Male Gen_Female Gen_Female Gen_Male Gen_Female
Levels:
'Gen_Male' 'Gen_Female'
Il codice sopra produce un output in cui il nome "Male" diventa "Gen_Male" e "Female" diventa "Gen_Female".
Ordinare una variabile categoriale
Vediamo un esempio diverso con valori categoriali ordinali, dove l’ordine conta. Ad esempio, per la taglia di un paio di pantaloni, ci possono essere taglie considerate Large come "L", Extra Large come "XL" ed Extra extra Large come "XXL" disposte in ordine crescente. Il codice seguente contiene la raccolta del vettore di caratteri "L", "XL" e "XXL" salvata in 'pant'. 'pant.factor' è la variabile con il parametro che contiene i livelli in ordine crescente come 'levels = c("L", "XL", "XXL")' e infine 'ordered = TRUE', che rende possibile l’ordinamento secondo le tue esigenze.
pant <- c("XL","L","XL","XXL","L","XL")
pant.factor <- factor(pant,ordered = TRUE,levels = c("L","XL","XXL"))
pant.factor
pant.factor[1] > pant.factor[2]
- XL
- L
- XL
- XXL
- L
- XL
Livelli:
- 'L'
- 'XL'
- 'XXL'
TRUE
XL L XL XXL L XL
Levels:'L'< 'XL' < 'XXL'
TRUE
L’output mostra dapprima l’output normale in cui tutti i valori del vettore (XL, L, XL, XXL, L, XL) vengono stampati usando 'pant.factor'. I livelli dei valori del vettore 'L' < 'XL' < 'XXL' sono disposti in ordine crescente, come stampato in console. Inoltre, 'pant.factor[1] > pant.factor[2]' confronta se "XL" è maggiore di "L", e il risultato è TRUE.
Congratulazioni
Congratulazioni, sei arrivato alla fine di questo tutorial!
In questo tutorial hai visto la funzione factor in R, con un esempio, la sua struttura, l’ordine dei livelli, la rinomina dei livelli e, infine, l’ordinamento dei valori categoriali.
Se vuoi imparare di più su R, segui il corso di DataCamp Introduction to R.
Dai un’occhiata al nostro tutorial su Come usare le funzioni in R.

