본문 바로가기
Programming/R

[R] 데이터 전처리, 결측치

by 코딩하는 금융인 2022. 8. 7.

안녕하세요.

오늘은 데이터 전처리에서 가장 중요한 과정 중 하나인 결측치에 대해 알아보고 R을 활용하여 처리하는 방법에 대해 알아보겠습니다.

 

 결측치 개요 (정의/종류/방법)

▣ 결측치란?

자료가 누락되어있는 상태를 결측(missing)이라고 하며 누락 되어있는 상태를 별도의 숫자 또는 문자로 표기한 것을 결측값(missing value)이라고 한다.

 

▣ 결측치 종류

  • 완전 무작위 결측 (MCAR; Missing Completely at Random) : 결측치가 다른 변수들과 아무런 상관이 없음
  • 무작위 결측 (MAR; Missing at Random) : 특정 변수에 관련되어 누락되었지만, 그 변수는 결과와 관련이 없음
  • 비무작위 결측 (MNAR; Missing Not At Random) : 결과에 관련이 있는 변수 때문에 값이 누락됨

 

▣ 결측치 처리 방법

  • 합리적 접근법 : 결측값을 평균, 중앙값, 예상값 등으로 채워 넣는 방식
  • 완전제거법 : 결측값이 있는 데이터 전체를 삭제하는 방법
  • 다중대체법 : 시뮬레이션을 통해 예측되는 최대한 정확한 값을 채워 넣는 방식
반응형

 

 R 활용하여 결측치 조회 및 처리

 결측치 조회하기

† 결측치 조회함수

함수 내용
is.na() NA를 확인하며 결과값은 (TRUE, FALSE) 출력
is.null() Null을 확인하며 결과값은 (TRUE, FALSE) 출력
apply, sapply function에 결측치 조회 함수 활용

 

† 결측치 개수 확인하기

<데이터 예시 :: df>

sex score
M 5
F 4
NA 3
M 4
F NA

 

## 데이터 :: df ##
df <- data.frame(sex = c("M", "F", NA, "M", "F"),
                 score = c(5, 4, 3, 4, NA))

## 결측치 확인하기 ##
is.na(df)         # 결측치 확인
table(is.na(df))  # 결측치 빈도 출력
'''
결과 총 NA 2개 확인
FALSE  TRUE 
    8     2 
'''

## 결측치 확인하기2 ##
apply(X = df, MARGIN = 2, FUN = function(x){sum(is.na(x))})
sapply(X = df, FUN = function(x){sum(is.na(x))})

'''
결과 각 열별로 1개씩 결측치
  sex score 
    1     1 
'''

 

▣ 결측치 처리

† 결측치 처리함수

함수 내용
na.omit() 결측치를 제거하는 함수로 결측값 제거한 객체 출력
함수 : na.rm = T mean, sum 등에 'na.rm = T' 추가시 결측값 제거 후 계산
ifelse ~ is.na 결측값 대체 

 

† 결측치 처리하기

## ggplot2 mpg 데이터 ##
mpg <- as.data.frame(ggplot2::mpg)           # mpg 데이터 불러오기
mpg[c(65, 124, 131, 153, 212), "hwy"] <- NA  # NA 할당하기

# hwy 결측치 빈도표 출력
table(is.na(mpg$hwy))
'''
FALSE  TRUE 
  229     5 
'''

# hwy 결측치 평균으로 대체하기
mpg %>%
  filter(!is.na(hwy)) %>%          # 결측치 제외
  group_by(drv) %>%                # drv별 분리
  summarise(mean_hwy = mean(hwy))  # hwy 평균 구하기
'''
  drv   mean_hwy
  <chr>    <dbl>
1 4         19.2
2 f         28.2
3 r         21  
'''

# hwy 결측치 제거하기
head(na.omit(mpg),5)
'''
  manufacturer model displ year cyl      trans drv cty hwy fl   class
1         audi    a4   1.8 1999   4   auto(l5)   f  18  29  p compact
2         audi    a4   1.8 1999   4 manual(m5)   f  21  29  p compact
3         audi    a4   2.0 2008   4 manual(m6)   f  20  31  p compact
4         audi    a4   2.0 2008   4   auto(av)   f  21  30  p compact
5         audi    a4   2.8 1999   6   auto(l5)   f  16  26  p compact
'''

 

References
반응형

댓글