Как обрабатывать значения nan в r (с примерами)


В R NaN означает «не число».

Обычно значения NaN возникают при попытке выполнить расчет, который приводит к недопустимому результату.

Например, деление на ноль или вычисление логарифма отрицательного числа дают значения NaN:

 #attempt to divide by zero
0 / 0

[1]NaN

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

[1]NaN

Обратите внимание, что значения NaN отличаются от значений NA , которые просто представляют собой пропущенные значения.

Для обработки значений NaN в 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 

Следующие примеры показывают, как использовать каждый из этих методов на практике.

Пример 1. Определите позиции в векторе с помощью значений NaN.

Следующий код показывает, как определить позиции в векторе, который содержит значения 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

Из результата мы видим, что элементы в позициях 2 и 4 вектора представляют собой значения NaN.

Пример 2. Подсчет общего количества значений NaN в векторе

Следующий код показывает, как подсчитать общее количество значений NaN в векторе в 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

Из результата мы видим, что в векторе всего 2 значения NaN.

Пример 3: Удаление значений NaN в векторе

Следующий код показывает, как создать новый вектор со значениями NaN, удаленными из исходного вектора:

 #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

Обратите внимание, что два значения NaN были удалены из вектора.

Пример 4: Замена значений NaN в векторе

Следующий код показывает, как заменить значения NaN в векторе нулями:

 #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

Обратите внимание, что оба значения NaN в векторе заменены нулями.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:

Как интерполировать недостающие значения в R
Как найти и посчитать пропущенные значения в R
Как использовать «Не NA» в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *