Como lidar com valores nan em r (com exemplos)


Em R, NaN significa Não é um Número.

Normalmente, os valores NaN ocorrem quando você tenta realizar um cálculo que resulta em um resultado inválido.

Por exemplo, dividir por zero ou calcular o log de um número negativo produz valores NaN:

 #attempt to divide by zero
0 / 0

[1]NaN

#attempt to calculate log of negative value
log(-12)

[1]NaN

Observe que os valores NaN são diferentes dos valores NA , que simplesmente representam valores ausentes.

Você pode usar os seguintes métodos para lidar com valores NaN em 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 

Os exemplos a seguir mostram como usar cada um desses métodos na prática.

Exemplo 1: Identificar posições em um vetor com valores NaN

O código a seguir mostra como identificar posições em um vetor que contém valores 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

Pelo resultado, podemos ver que os elementos nas posições 2 e 4 do vetor são valores NaN.

Exemplo 2: Contando valores totais de NaN em um vetor

O código a seguir mostra como contar o número total de valores NaN em um vetor em 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

Pelo resultado podemos ver que existem 2 valores totais de NaN no vetor.

Exemplo 3: Remover valores NaN do vetor

O código a seguir mostra como criar um novo vetor com valores NaN removidos do vetor original:

 #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

Observe que os dois valores NaN foram removidos do vetor.

Exemplo 4: Substitua valores NaN no vetor

O código a seguir mostra como substituir valores NaN em um vetor por zeros:

 #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

Observe que ambos os valores NaN foram substituídos por zeros no vetor.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:

Como interpolar valores ausentes em R
Como encontrar e contar valores ausentes em R
Como usar “Não é NA” em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *