Jak obsługiwać wartości nan w r (z przykładami)
W R NaN oznacza Not a Number.
Zwykle wartości NaN pojawiają się podczas próby wykonania obliczeń, których wynikiem jest nieprawidłowy wynik.
Na przykład dzielenie przez zero lub obliczanie logarytmu liczby ujemnej daje wartości NaN:
#attempt to divide by zero 0 / 0 [1]NaN #attempt to calculate log of negative value log(-12) [1]NaN
Należy pamiętać, że wartości NaN różnią się od wartości NA , które po prostu reprezentują brakujące wartości.
Do obsługi wartości NaN w R można użyć następujących metod:
#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
Poniższe przykłady pokazują, jak zastosować każdą z tych metod w praktyce.
Przykład 1: Zidentyfikuj pozycje w wektorze za pomocą wartości NaN
Poniższy kod pokazuje, jak zidentyfikować pozycje w wektorze zawierającym wartości 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
Z wyniku widzimy, że elementy w pozycjach 2 i 4 wektora mają wartości NaN.
Przykład 2: Zliczanie całkowitych wartości NaN w wektorze
Poniższy kod pokazuje, jak policzyć całkowitą liczbę wartości NaN w wektorze w 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
Z wyniku widzimy, że w wektorze znajdują się 2 całkowite wartości NaN.
Przykład 3: Usuń wartości NaN z wektora
Poniższy kod pokazuje jak utworzyć nowy wektor z wartościami NaN usuniętymi z oryginalnego wektora:
#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
Należy zauważyć, że dwie wartości NaN zostały usunięte z wektora.
Przykład 4: Zamień wartości NaN w wektorze
Poniższy kod pokazuje, jak zastąpić wartości NaN w wektorze zerami:
#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
Należy pamiętać, że obie wartości NaN zostały zastąpione w wektorze zerami.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w języku R:
Jak interpolować brakujące wartości w R
Jak znaleźć i policzyć brakujące wartości w R
Jak używać „Is Not NA” w R