본문 바로가기
R 주제/R 기초 및 통계 강의

[R 강의] 86. 결측치(NA) 확인, 제거, 수정하는 방법

by 만다린망고 2020. 5. 15.
반응형
도구 R로 푸는 통계

86. 결측치(NA) 확인, 제거, 수정하는 방법



오늘 사용할 데이터입니다.


C1=c(1,2,NA,NA,5)
C2=(1,2,3,4,5)
C3=(NA,2,3,4,5)
md=data.frame(C1,C2,C3)


> md
  C1 C2 C3
1  1  1 NA
2  2  2  2
3 NA  3  3
4 NA  4  4
5  5  5  5


1) 결측치 확인


결측치를 확인할 때는 is.na( ) 함수를 사용합니다. 위 데이터프레임에 적용해봅시다.


C1=c(1,2,NA,NA,5)
C2=(1,2,3,4,5)
C3=(NA,2,3,4,5)
md=data.frame(C1,C2,C3)


> is.na(md)
        C1    C2    C3
[1,] FALSE FALSE  TRUE
[2,] FALSE FALSE FALSE
[3,]  TRUE FALSE FALSE
[4,]  TRUE FALSE FALSE
[5,] FALSE FALSE FALSE


원소 개수가 많지 않아 눈으로 확인이 가능합니다. NA가 있는 위치에 TRUE가 표시됩니다.

만약 원소의 개수가 굉장히 많다면 눈으로 확인이 어려울 것입니다. 이럴 때는 NA의 수를 계산해주면 됩니다. 0이 아닌 결과가 나왔다면 NA가 포함되어 있는 것입니다.


> sum(is.na(md))
[1] 3



2) NA 제거


na.omit() 함수를 사용하여 NA가 포함된 행을 제거합니다.


C1=c(1,2,NA,NA,5)
C2=(1,2,3,4,5)
C3=(NA,2,3,4,5)
md=data.frame(C1,C2,C3)


> na.omit(md)
  C1 C2 C3
2  2  2  2
5  5  5  5



3) NA를 다른 값으로 수정


NA를 다른 값으로 변경해봅시다. 열별로 수정이 가능합니다.

첫번째 열을 수정해봅시다.


C1=c(1,2,NA,NA,5)
C2=(1,2,3,4,5)
C3=(NA,2,3,4,5)
md=data.frame(C1,C2,C3)


> md$C1[is.na(md$C1)]=100
> md
   C1 C2 C3
1   1  1 NA
2   2  2  2
3 100  3  3
4 100  4  4
5   5  5  5


원리를 알아봅시다. is.na(md$C1)은 md의 C1열에서 NA인 원소를 TRUE로, 아닌 원소를 FALSE로 반환합니다.


> is.na(md$C1)
[1] FALSE FALSE  TRUE  TRUE FALSE


이 값을 다시 인덱스로 사용하면, NA가 있는 원소에만 접근하게 됩니다.
 

> md$C1[is.na(md$C1)]
[1] NA NA


NA가 있는 원소에만 접근하여 이 값에 100을 넣어주는 것입니다.

 

 

영상이 더 편하신 분

 

반응형

댓글