본문 바로가기

R

R - 결측값 처리

# 데이터 전처리(data preprocessing)

- 확보한 데이터를 정제하고 가공하여 분석에 적합한 형태로 만드는 과정

- 현실에서는 잘 정리된 데이터셋을 바로 얻는 경우가 많지 않다.

- 데이터 전처리는 전체 분석 과정에서 오랜 시간을 차지한다.

 

# 결측값의 처리 

- 결측값은 데이터 수지, 저장 과정에서 값을 얻지 못하는 경우 발생(NA)

- 결측값이 섞여 있는 데이터셋은 분석할 때 문제를 일으킴 ex) 합, 평균 계산시

- 결측값은 크게 2가지 방법으로 처리한다.

(1) 결측값을 제거하거나 제외한 후 분석

(2) 결측값을 추정하여 적당한 값으로 치환한 후 분석 

 

#아래의 경우 결측값이 섞여 있어 합계가 NA가 된다.

z <- c(1,2,3,NA,5,NA,8)
sum(z)

sum(z,na.rm=TRUE#결측값은 제외한다는 명령어

is.na(z) # 결측값인지 아닌지 식별

sum(is.na(z)) #z 벡터 값에 존재하는 NA의 갯수의 합

sum(!is.na(z)) #NA가 아닌 일반 요소의 갯수

# 결측값을 0으로 치환

z1 <- c(1,2,3,NA,5,NA,8)
z1[is.na(z1)] <- 0 
z1
sum(z1)

# 결측값을 제거

z2 <- c(1,2,3,NA,5,NA,8)
z3 <- as.vector(na.omit(z2)) #NA값을 제거하는 명령어 
z3

#매트릭스나 데이터 프레임의 결측값 처리

x <- iris  # iris 데이터셋에 임의의 결측값을 생성
x
x[1,2] <- NA
x[1,3] <- NA
x[2,3] <- NA
x[3,4] <- NA
head(x)

 

# 위의 x 데이터의 결측값의 갯수 조회하기

for(i in 1:ncol(x)){
  na <- is.na(x[,i])
  cat(colnames(x)[i],'\t',sum(na),'\n')
}

 

# 칠레 1988년도 대통령 선거 여론조사 데이터를 이용한 결측값 확인하기

str(Chile)

# 결측값 갯수 확인하기
sum(is.na(Chile)) # 결측값 데이터 수 

-> 295개

sum(!is.na(Chile)) # 결측값이 아닌 데이터 수
-> 21305개

# 결측값이 존재하는 행의 갯수

nrow(Chile[!complete.cases(Chile),])

-> 269개 

# 결측값이 없는 레코드만 ch 변수에 저장하기
ch <- Chile[complete.cases(Chile),]
ch

 

 

'R' 카테고리의 다른 글

R - 샘플링(sampling)  (0) 2021.05.31
R - 정렬 (sort, order)  (0) 2021.05.31
R - attach/detach 함수  (0) 2021.05.28
R - 산점도(scatter plot)  (0) 2021.05.27
R - 상자그림(box plot)  (0) 2021.05.27