Ricerca Sociale con R

Una wiki per l'analisi dei dati con R

Strumenti Utente

Strumenti Sito


Il Laboratorio di Analisi dei Dati con R, dell'Università di Teramo su piattaforma Meet, inizia il 9 aprile 2021 - Iscrizione - email

Barra laterale

Segui il canale Telegram

Max 3 mess. al giorno (cos'è?)

Contenuti

Ultimi post del blog

Video e tutorial

Pagine aggiornate


Formazione

Mini webinar

Incontri individuali online


Ricerca sociale con R (il libro)


Contatti



Download R
r:gestione_dei_dati:trasformazione_variabili

Trasformare il tipo di variabile

Vettori, fattori e date

In automatico, R interpreta i campi numerici come vettori e i campi di testo come vettori carattere (dalla versione 4). Possono però esistere situazioni in cui è necessario trasformare le variabili da un tipo all'altro

as.numeric() a vettore numerico (att. al tipo)
as.character() a vettore carattere
as.factor() a fattore
as.Date() a data (att. al formato)

Da variabile numerica a variabile categoriale

La variabile è stata importata come numerica, in quanto composta di numeri, ma si tratta di una variabile nominale: Vedi Fattori: da vettore numerico a fattore

La variabile è stata importata come numerica, in quanto composta di numeri, ma si tratta di una variabile ordinale: Vedi Fattori ordinati

Da variabile di testo a variabile categoriale

La variabile è stata costruita o importata come vettore carattere, ma si vogliono indicare i livelli e trasformarla in fattore:

#costruisco un vettore carattere:
eta.classi <- c("giovane", "giovane", "anziano", "adulto", 
                "adulto", "giovane", "adulto")
 
# eta.classi diventa il fattore eta.classi
eta.classi <- factor(eta.classi)

Vedi Fattori: da vettore carattere a fattore

Da variabile categoriale a variabile di testo

La variabile è stata importata o costruita come variabile categoriale (con livelli), ma contiene testo da trattare come tale, ad esempio risposte a domande libere. Riprendiamo l'esempio di eta.classi:

eta.classi2 <- as.character(eta.classi)

Da variabile categoriale a variabile cardinale

Vogliamo utilizzare i valori numerici dei livelli di un fattore, ad esempio per usare scale Likert costruite come ordinali:

eta.classi3 <- as.numeric(eta.classi)

È preferibile indicare la classe (*numeric*), piuttosto che il tipo (*double*, *integer* ecc.), a meno che non siamo molto sicuri dei valori contenuti nel vettore, o del tipo di risultato di cui abbiamo bisogno:

as.numeric(c("1", "2", "3.3"))
[1] 1.0 2.0 3.3
typeof(as.numeric(c("1", "2", "3.3")))
[1] "double"

Se forziamo il tipo “integer”, ad esempio, i valori verranno trasformati in numeri interi:

as.integer(c("1", "2", "3.3"))
[1] 1 2 3

Date

Spesso, le date vengono importate in formato testo. Possono essere trasformate in tipo “Date” con il comando as.Date:

# costruiamo una variabile carattere "Data"
Data <-c("24/7","10/2","30/3")
 
# la trasformiamo in tipo "Date"
Data2 <- as.Date(Data, format("%d/%m"))
Data2
[1] "2017-07-24" "2017-02-10" "2017-03-30"

R interpreta correttamente il formato della data, ma aggiunge l'anno corrente.

In generale, capita di dover fare delle correzioni, e spesso conviene trasformare la variabile carattere, ad esempio:

#aggiungiamo l'anno
DataB<-paste(Data,"2016", sep = "/")
 
DataB2 <- as.Date(DataB, format("%d/%m/%Y"))
DataB
[1] "24/7/2016" "10/2/2016" "30/3/2016"
DataB2
[1] "2016-07-24" "2016-02-10" "2016-03-30"

I formati delle date possono essere di tanti tipi, a seconda del sistema che le ha generate, o del modo in cui sono state inserite o interpretate: vedi Quik-R: Date Values

Script di esempio

Es Ricod_1.R
#costruisco un vettore carattere:
eta.classi <- c("giovane", "giovane", "anziano", "adulto", 
                "adulto", "giovane", "adulto")
 
# eta.classi diventa il fattore eta.classi
eta.classi <- factor(eta.classi)
 
# da categoriale a testo
eta.classi2 <- as.character(eta.classi)
 
# da categoriale a cardinale
eta.classi3 <- as.numeric(eta.classi)
 
# costruiamo una variabile carattere "Data"
Data <-c("24/7","10/2","30/3")
 
# la trasformiamo in tipo "Date"
Data2 <- as.Date(Data, format("%d/%m"))
 
#aggiungiamo l'anno
DataB<-paste(Data,"2016", sep = "/")
 
DataB2 <- as.Date(DataB, format("%d/%m/%Y"))
r/gestione_dei_dati/trasformazione_variabili.txt · Ultima modifica: 23/09/2021 08:57 da admin