이번 포스팅은 빈 칸 에 대한 이야기 입니다. NA
는 R 빈칸을 나타내는 특수한 문자로 취급되는데, 벡터 안에 이런 것들이 섞여있는 경우 어떻게 제거 할 수 있는지 알아보겠습니다.
R 빈칸을 나타내는 방법
NA를 잘 알기 위해서는 먼저 R에서 빈 칸을 나타내는 방법을 정확히 이해하고 있어야 합니다. 흔히, NA와 NULL을 많이 헷갈려 합니다. 두 개념이 어떠한 차이가 있는지 알아보죠.
데이터가 없는 비어있는 공간을 나타내는 NA
NA
는 결측값(missing value)을 나타내는 값입니다. NA
를 벡터에 추가하면 해당 위치에는 NA
라는 결측값이 들어갑니다. NA
는 실제로 값을 가지고 있지 않지만, 벡터의 길이나 타입을 유지하기 위해 존재하는 것입니다.
NA
(Not Available): missing data
a <- c(20, NA, 13, 24, 309)
a
>> [1] 20 NA 13 24 309
벡터 안에 NA가 들어있는 경우, 계산 값이 NA로 나오게 됩니다. 이유는 숫자에 NA를 더하면 NA가 되기 때문입니다. 이러한 것을 방지하기 위해서, 많은 함수들에는 NA 무시 옵션이 들어있습니다.
mean(a)
>> [1] NA
NA
무시 옵션
mean(a, na.rm = TRUE)
>> [1] 91.5
존재하지 않음을 나타내는 NULL
NULL
은 아무런 값도 가지지 않는 상태를 나타내는 객체입니다. NULL
객체를 벡터에 추가하면 해당 원소는 아예 존재하지 않는 것으로 처리되기 때문에, 해당 공간이 없어지게 됩니다.
NA
와NULL
의 차이
NULL_is_not_blank <- NULL
c(1, NULL_is_not_blank)
>> [1] 1
아래의 코드에서처럼 NA를 벡터에 넣게 되면, NA는 사라지지 않는 공간을 만들게 됩니다.
NA_is_blank <- NA
c(1, NA_is_blank)
>> [1] 1 NA
R 빈칸 제거 방법
빈 칸을 제거하는 방법은 다음과 같이 두 가지가 있습니다.
na.omit()
함수 사용
na.omit()
함수를 사용하면 쉽게 NA를 제거 할 수 있습니다. 결과값의 첫 줄은 NA
가 제거된 벡터가 반환되고, 뒤의 정보는 2번째 원소가 생략되었다는 것을 나타내줍니다.
na.omit(a)
>> [1] 20 13 24 309
>> attr(,"na.action")
>> [1] 2
>> attr(,"class")
>> [1] "omit"
벡터 필터링 활용
is.na()
함수는 벡터 a의 원소가 NA인지를 아닌지를 알려주는 함수입니다. NA인 경우 TRUE를 반환하고, 그렇지 않은 경우 FALSE를 반환합니다. 따라서, 이러한 논리 벡터를 사용하여 벡터 필터링을 하게 되면, 다음과 같이 NA가 생략된 벡터를 얻을 수 있습니다.
a[!is.na(a)]
>> [1] 20 13 24 309
본 포스팅은 R 프로그래밍 기초 공략.zip 교재의 일부분 입니다. 본 교재는 R을 독학하시는 분들을 위하여 특별히 제작된 교재입니다. R을 이제 막 시작하셨다면 슬기로운 통계생활과 같이 공부해보세요!