Spesso in R, analizzando grandi dataset potremmo trovare diversi valori mancanti (missin values). In R, questi valori mancanti sono rappresentati dal simbolo NA (not available) NON DISPONIBILE. Per quanto riguarda i valori numerici impossibili (per esempio una divisione di un numero per zero) sono rappresentati dal simbolo NaN (not a number) NON UN NUMERO.

Se per esempio dobbiamo calcolare una media o qualsiasi funzione che si prende un numero come argomento, se ci troviamo variabili di tipo Na oppure NaN allora non è possibile applicare la funzione. A tal proposito abbiamo in R la possibilità di gestire questi valori con semplici funzioni:

Informazioni sui valori mancanti

y <- c(1,2,3,NA)
is.na(y)
[1] FALSE FALSE FALSE TRUE

Passando come argomento un vettore, is.na restituisce un vettore con valori booleani dove TRUE corrisponde alla posizione con valori NA.

Assegnare valori mancanti

mydata$naV<- NA

Escludere i valori mancanti dalle analisi in R

NOTA: Qualsiasi funzione aritmetica sui valori mancanti restituisce valori mancanti.

> x <- c(1,2,NA,3)
> mean(x) # restituisce NA
[1] NA
> mean(x, na.rm=TRUE) # restituisce 2
[1] 2

La funzione complete.cases() ci lista un vettore logico dove è messo in evidenza quali valori sono mancanti.

> complete.cases(x)
[1] TRUE TRUE FALSE TRUE
[1] 2

Un altra funzione di semplice utilizzo è na.omit che restituisce l’oggetto escludendo i valori mancanti.

> na.omit(x)
[1] 1 2 3
attr(,"na.action")
[1] 3
attr(,"class")
[1] "omit"

A differenza di SAS, le funzioni di R per i valori mancanti non distingue i dati numerici dagli altri quindi na.omit o na.rm=TRUE esclude sia i valori NA che i valori Nan.

Altri packages R

Se abbiamo l’esigenza di imputare variabili condizionali da altre variabili è possibile utilizzare il package di R Amelia. Un altro package interessante è mice che basa l’imputazione dei valori mancanti su procedure di tipo bayesiano.

Guarda tutti i tutorial di Data input oppure torna su R tutorial.