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