# 데이터 전처리(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 |