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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *