빅데이터/R

[R] 데이터 전처리 - 결측치 처리 (제거 및 대체)

young 2019. 12. 8. 17:50
반응형

결측치 처리

분석자가 데이터를 코딩하는 과정에서 실수로 입력하지 않았거나, 응답자가 고의로 응답을 회피한 경우 결측치(Missing Values, R에서는 NA로 표시)가 발생한다. 이 경우 결측치 항목의 최대 자리수만큼 숫자 9를 채워 부호화하거나 하이픈(-)으로 해당 항목을 채워 넣는다. 결측치를 처리하는 방법에는 결측치를 제거하는 방법도 있지만, 결측치를 0이나 평균값으로 대체하는 방법도 고려해 볼 수 있다.

 

1. 결측치 확인

summary() 함수를 이용하여 특정 변수의 결측치를 확인할 수 있으며, 결측치가 포함된 데이터를 대상으로 합계를 구하는 sum() 함수를 실행하면 'NA'가 출력된다.

 

 - 결측치 자료 조합 확인용 시각화 도구

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
install.packages("VIM")
require(VIM)
 
# 결측치 자료 조합 확인용 시각화 도구
aggr(x, prop = FALSE, numbers = TRUE)
 
# 두 개의 변수간의 결측치 관계 확인 시각화 도구
marginplot ( x[c("Sepal.Width""Petal.Length")],
            pch = 20,
            col = c("darkgray","red","blue"))
head(x[, c("Sepal.Width","Petal.Length")])
 
# Matrix/DataFrame의 행(data)별 결측치 확인
rowSums(is.na(x))
sum(rowSum(is.na(x))>0)
sum(is.na(x))

 

2. 결측치 제거

결측치를 제거하여 데이터를 연산하는 방법에는 자체 함수에서 제공되는 속성을 이용하는 방법과 결측치 제거 함수를 이용하는 방법이 있다.

함수 사용 예시 설명
sum(dataset$변수, na.rm=T) 결측치 제거
var2 <- na.omit(dataset$변수) 해당 변수(칼럼)의 결측치 제거
1
2
3
# 결측치를 제외한 새로운 데이터셋 생성
x!complete.cases(x), ] #NA가 포함 된 행을 출력
y <- xcomplete.cases(x), ] #NA가 없는 행을 변수 y에 저장

 

3. 결측치 대체

결측치를 제거하면 결측치를 포함하는 관측치가 제거된다. 관측치를 유지하기 위해서는 결측치가 0이나 평균으로 대체하는 방법을 선택한다.

함수 사용 예시 설명
dataset$변수 = ifelse( !is.na(x), x, 0 ) 결측치를 0으로 대체
dataset$변수 = ifelse( !is.na(x), x, round(mean(x, na.rm=T), 2) ) 결측치를 평균값으로 대체

 

반응형