본문 바로가기
data analysis, R

R공부- 데이터 정제(결측치)

by 데이터 퍼즐 2021. 4. 24.
반응형

1. 결측치 찾기

ㄴ대문자 NA(결측치)

data.frame(sex=c("M","F",NA,"M","F"),score=c(5,4,3,4,NA))

ㄴNA 앞 뒤에 겹 따옴표가 없음

is.na(df) #결측치 확인

table(is.na(df)) #결측치 빈도

* filter로 분류 시 : 어떤 변수에 결측치가 있는지 알 수 없음

#table(is.na(df$sex) / table(is.na(df$score)로 빈도 출력하여 확인

*결측치 포함상태로 출력

ㄴmean(df$score) / sum(df$score)

#어떤 함수에서 NA라는 결과값이 나왔다면 결측치를 확인해봐야겠다는 것을 인지

*결측치 반영 : df%>%filter(is.na(score))

 

2. 결측치 제외

*#결측치 제외하고 출력 : df%>%filter(!is.na(score))

ㄴassign을 해줘야 반영이 됨을 잊지 말것!

 

*여러 변수 동시 결측치 없는 데이터 출력

ⓐdf_nomiss<-df%>%filter(!is.na(score) & !is.na(sex))

ⓑdf_nomiss2<-na.omit(df) #모든 변수 결측치 없는 데이터 추출(데이터 손실 유의)

 

*함수 결측치 제외 기능 이용: na.rm=T

ex) mean(df$score, na.rm=T) / sum(df$score, na.rm=T)

ㄴsummarise()에서 na.rm=T 사용: 결측치 생성> 평균 구하기

#브라켓(내장함수만 가지고 전처리할 때): ex) exam[c(3,8,15),"math"]<-NA = exam[행,열]<-NA할당

ㄴexam%>%summarise(mean_math=mean(math, na.rm=T), 

                                sum_math=sum(math,na.rm=T),

                                median_math=median(math,na.rm=T)

 

*결측치 대체법(Imputation)

ⓐ대표값(평균, 최빈값 등)으로 일괄 대체

ㄴ결측치가 맞으면 평균으로 대체하고 그렇지 않으면 그대로 유지: ifelse(is.na(exam$math),55,exam$math)

ㄴ확인: table(is.na(exam$math))

ㄴmpg%>% filter(!is.na(hwy))%>% group_by(drv)%>% summarise(mean_hwy=mean(hwy))

# 결측치 제외, drv별 분리, hwy 평균 구하기

 

ⓑ예측값 추정 대체: 머신러닝으로 해결하기도 함

 

반응형

댓글