Як обробляти значення 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
Як використовувати “Is Not NA” у R