상세 컨텐츠

본문 제목

R airquality 데이터에서 NA값을 제거할 때 주의점

IT/R

by J KIMS 2020. 8. 20. 15:40

본문

반응형

airquality는 R에서 기본으로 제공해주는 데이터로

오존의 농도(Ozone)와 일사량(Solar.R) 풍속(Wind)  온도(Temp) 등의 정보가 담겨있다.

 

 

데이터를 확인해보면 이런 식으로 NA값이 들어있어서 NA값을 빼주는 작업을 해야 한다.

알다시피 NA값을 제거하는 데는 na.omit() 함수를 사용한다.

 

그런데 오늘 깨달은 이상한 점은.. airquality 전체에 na.omit을 적용하느냐 개별 데이터(오존농도, 일사량, 온도 등)에 na.omit를 적용하느냐에 따라 데이터의 요소수가 달라진다는 것이다.

 

oz에 NA값을 제거한 오존 농도 값을 저장하고

temp에 NA값을 제거한 온도 값을 저장했는데

lm()을 적용하니 변수의 길이들이 다르다고 에러가 뜬다.

실제로 확인해보니 oz과 temp의 데이터 개수가 다른 것이었다.

 

분명히 이전에 airquality 데이터들로 아무 문제없이 선형 회귀를 했던 기억이 있는데

이런 에러가 나는 것이 이상하여 전에 썼던 코드를 다시 보니..

 

 

위의 코드와 다른 점은 airquality 전체에 먼저 na.omit()을 적용한 후 열 별로 데이터를 분리한 것이었다.

먼저 NA값을 제거해주고 오존농도와 온도를 oz와 temp에 저장하니

선형 회귀 함수를 적용해도 같은 에러가 뜨지 않는다.

 

추측컨대 데이터 전체에 na.omit()을 적용하면

NA값이 들어있는 행을 삭제하여 열 별로 요소 수가 다를 일이 없게 만들어주는 것 같다.

 

 

보다시피 oz와 temp의 데이터 개수가 일치한다. 위에서는 111개보다 자료 값이 많았지만 서로 개수가 일치하지 않아 선형 회귀를 하려고 하니 에러가 떴었다.

 

NA값을 제거한 airquality를 직접 보면 기존에 NA값이 포함된 행은 모두 삭제된 것을 알 수 있다.

위의 캡처 같은 경우에는 5,6행이 사라짐.

 

얼핏 보면 같은 코드인데 이런 차이가 생긴다는 거에 충격 받음 😨

빨리 발견해서 망정이지 아니면 삽질하고 있을 뻔했다;

반응형

'IT > R' 카테고리의 다른 글

R 간단한 워드 클라우드 (word cloud) 만들기  (0) 2020.12.09
R 일본어 깨짐 문제 인코딩 설정 방법  (0) 2020.12.09

관련글 더보기

댓글 영역