R

R MANUALS : ② 숫자와 벡터 → 2.5 결측치

urbanlr 2021. 12. 25. 13:06
SMALL

본 글은 https://cran.r-project.org/doc/manuals/r-release/R-intro.html내용을 기반으로 작성되었습니다.

Copyright © 1999–2021 R Core Team

 

 

- 벡터는 항상 완벽하게 구성되지는 않음

- 정확한 값이 입력되어 있지 않은 경우 "결측치"가 발생하게 됨

- 통상 NA라고 불리는 값을 결측치라고 부름

- NA에는 어떤 연산 기호를 갖다 붙여도 NA로 값이 반환됨

> x <- c(1,2,3,NA,5,6)
> x
[1]  1  2  3 NA  5  6

> x+1
[1]  2  3  4 NA  6  7

> x*2
[1]  2  4  6 NA 10 12

 

 

- is.na() : 벡터 내에 존재하는 값이 NA값인지 판단

- 벡터 내에 존재하는 하나 하나 값에 대하여 NA값인지 판단하고 논리값으로 반환

- NA이면 TRUE, 그렇지 않으면 FALSE 값을 반환

> x <- c(1,2,3,NA,5,6)
> x
[1]  1  2  3 NA  5  6

> is.na(x)
[1] FALSE FALSE FALSE  TRUE FALSE FALSE

 

 

- 우리가 앞선 시간에 배운 논리연산자 중에 같음(==)을 활용하여 x==NA라는 코드를 써도 될 것 같지만

- NA값에 대한 연산자는 NA로 배출되기 때문에 x==NA는 TRUE, FALSE가 아닌 NA값을 반환하게 됨

- NA값은 불완전한 값이기 때문에 연산자체가 불가능하기 때문임

- 따라서 어떤 값이 NA인지 아닌지 알고 싶을 때는 x==NA가 아닌 is.na(x)를 써야 함

> x <- c(1,2,3,NA,5,6)
> x
[1]  1  2  3 NA  5  6

> x==NA
[1] NA NA NA NA NA NA

 

 

- 결측치의 또 다른 유형 중 하나는 NaN임

- NA는 값이 없다 쪽에 가깝다면, NaN은 값이 잘못됐다는 쪽에 가까움

- 예를 들어 0은 0으로 나눌 수 없고, 무한대(Inf)끼리 연산은 의미가 없음

- 이러한 경우에 NaN값이 반환됨

> 0/0
[1] NaN

> Inf-Inf         #Inf는 무한대값을 의미
[1] NaN

 

 

- is.na()는 NA와 NaN 둘 다 TRUE로 반환하게 됨

- NaN값을 별도로 찾기 위해서는 is.nan() 함수를 사용해야 함

> y <- c(1,2,NaN,4,NA,6)
> y
[1]   1   2 NaN   4  NA   6

> is.na(y)
[1] FALSE FALSE  TRUE FALSE  TRUE FALSE

> is.nan(y)
[1] FALSE FALSE  TRUE FALSE FALSE FALSE

 

LIST