1.Summary - 1.데이터 정제하기

CODEDRAGON Development/Big Data, R, ...

반응형


 

 

 

데이터 정제시 결측값 처리 방법

방법

설명

삭제

결측값이 발생한 모든 관측치를 삭제하거나 데이터 중 모델에 포함시킬 변수들 중 결측값이 발생한 모든 관측치를 삭제하는 방법(부분 삭제)이 있습니다.

다른 값으로 대체

결측값이 발생한 경우 다른 관측치의 평균, 최빈값, 중간값 등으로 대체 가능 합니다.

예측값 삽입

결측값이 없는 관측치를 트레이닝 데이터로 사용해서 결측값을 예측하는 모델을 만들고, 이 모델을 통해 결측값이 있는 관측 데이터의 결측값을 예측하는 방법입니다.

https://codedragon.tistory.com/8282

https://codedragon.tistory.com/9759

 

 

 

 

 

 

 

R code 예시

결측치를 확인하고 결측값을 제거하는 코드

 

 

# STEP 1: 결측치 만들기

> # 결측치 표기 - 대문자 NA
> df <- data.frame(score = c(5,4,3,4,NA))
> df
  score
1     5
2     4
3     3
4     4
5    NA
> #
결측치 확인
> is.na(df)
     score
[1,] FALSE
[2,] FALSE
[3,] FALSE
[4,] FALSE
[5,]  TRUE
> #
결측치 빈도 출력
> table(is.na(df))

FALSE  TRUE
    4     1
> #
변수별로 결측치 확인하기
> # score
결측치 빈도 출력
> table(is.na(df$score))

FALSE  TRUE
    4     1

 

 

 

STEP 2:  결측치 포함된 상태로 분석

> # 평균 산출
> mean(df$score)
[1] NA
> #
합계 산출
> sum(df$score)
[1] NA

 

 

 

STEP 3:  결측치 제거하기

{dplyr} 패키지 사용하여 결측치 제거

> # 결측치 있는 행 제거하기
> install.packages("dplyr")
Error in install.packages : Updating loaded packages

Restarting R session...

> install.packages("dplyr")

> # dplyr 패키지 로드
> library(dplyr)
> # score
NA인 데이터만 출력
> df %>% filter(is.na(score))
  score
1    NA
> # score
결측치 제거
> df %>% filter(!is.na(score))
  score
1     5
2     4
3     3
4     4

 

STEP 4: 결측치 제외한 데이터로 분석하기

> # score 결측치 제거
> df_nomiss <- df %>% filter(!is.na(score))
> # score
평균 산출
> mean(df_nomiss$score)
[1] 4
> # score
합계 산출
> sum(df_nomiss$score)
[1] 16

>

 

 

https://codedragon.tistory.com/9987