Come gestire i valori nan in r (con esempi)
In R, NaN sta per Not a Number.
In genere, i valori NaN si verificano quando si tenta di eseguire un calcolo che restituisce un risultato non valido.
Ad esempio, la divisione per zero o il calcolo del logaritmo di un numero negativo producono entrambi valori NaN:
#attempt to divide by zero 0 / 0 [1]NaN #attempt to calculate log of negative value log(-12) [1]NaN
Tieni presente che i valori NaN sono diversi dai valori NA , che rappresentano semplicemente i valori mancanti.
È possibile utilizzare i seguenti metodi per gestire i valori NaN in R:
#identify positions in vector with NaN values which(is. nan (x)) #count total NaN values in vector sum(is. nan (x)) #remove NaN values in vector x_new <- x[!is. no (x)] #replace NaN values in vector x[is. nan (x)] <- 0
Gli esempi seguenti mostrano come utilizzare nella pratica ciascuno di questi metodi.
Esempio 1: identificare le posizioni in un vettore con valori NaN
Il codice seguente mostra come identificare le posizioni in un vettore che contiene valori NaN:
#create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)
#identify positions with NaN values
which(is. nan (x))
[1] 2 4
Dal risultato, possiamo vedere che gli elementi nelle posizioni 2 e 4 nel vettore sono valori NaN.
Esempio 2: conteggio dei valori NaN totali in un vettore
Il codice seguente mostra come contare il numero totale di valori NaN in un vettore in R:
#create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)
#identify positions with NaN values
sum(is. nan (x))
[1] 2
Dal risultato possiamo vedere che ci sono 2 valori NaN totali nel vettore.
Esempio 3: rimuovere i valori NaN nel vettore
Il codice seguente mostra come creare un nuovo vettore con i valori NaN rimossi dal vettore originale:
#create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)
#define new vector with NaN values removed
x_new <- x[!is. no (x)]
#view new vector
x_new
[1] 1 12 50 30
Da notare che i due valori NaN sono stati rimossi dal vettore.
Esempio 4: sostituisci i valori NaN nel vettore
Il codice seguente mostra come sostituire i valori NaN in un vettore con zeri:
#create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)
#replace NaN values with zero
x[is. nan (x)] <- 0
#view updated vector
x
[1] 1 0 12 0 50 30
Si noti che entrambi i valori NaN sono stati sostituiti con zeri nel vettore.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in R:
Come interpolare i valori mancanti in R
Come trovare e contare i valori mancanti in R
Come utilizzare “Non è NA” in R