프로그래밍/R

벡터에서 값을 추출할 때 NA(Missing Value)와 NULL의 처리

이자다 2023. 3. 16. 11:22
반응형
> ex <- c(1, 3, 5, 7, NA, 12)

> ex[ex < 10]
[1]  1  3  5  7 NA

> ex[ex %% 2 == 0]
[1] NA 12

 

ex 벡터에 미싱넘버를 추가하면 값을 추출할 때 항상 딸려나온다.

 

미싱 넘버는 말 그대로 무슨 값인지 모르는 값이다. 결측치다.

 

10보다 작은 수를 추출할 때 미싱넘버가 10보다 작을지 아닐지 모르니까 일단 추출할 때 포함시킨다.

 

짝수를 추출할 때 미싱넘버가 짝수일지 아닐지 모르니까 일단 추출할 때 포함시킨다.

 

때문에 미싱넘버가 섞인 벡터에서 미싱넘버를 제외하고 데이터를 추출하고 싶다면 이런 조건을 붙여야 한다.

 

> ex[ex %% 2 == 0 & !is.na(ex)]

[1] 12

 

이렇게 미싱넘버를 제하고 추출하도록 하면 정상적으로 짝수만 출력된다.

 

 

 

 

이번엔 벡터에 미싱넘버가 아니라 널 값을 줘보자

 

> ex1 <- c(1, 3, 7, NULL, 12)

> mean(ex1)
[1] 5.75

> mean(ex1, na.rm = T)
[1] 5.75

> ex1[ex1 %% 2 ==0]
[1] 12

> ex1[ex1 %% 2 ==0 & !is.null(ex1)]
[1] 12

> length(ex1)
[1] 4

null 값은 결측치, 무슨 값인지 모르는 값이 아니라 값이 존재하지 않는다는 뜻이다.

 

때문에 평균값을 구하는 mean을 널 값을 제거하고 시행해도, 그냥 시행해도 값이 똑같고.

 

짝수를 구할 때도 NA와 다르게 Null은 출력되지 않고.

 

벡터의 길이를 출력할 때는 아예 널 값이 제외된 길이가 출력된다.

반응형