제육's 휘발성 코딩
Published 2021. 11. 19. 21:19
[R] - 데이터 정제 Big Data
반응형

결측값

  • 입력이 누락된 값 (not available)
  • 결측값이 데이터에 포함되어 있을 경우 산술 연산을 수행할 수 없어 분석 결과가 왜곡될 수 있다.
  • 결측값 인식 함수인 is.na(x), complete, cases(x) 함수를 통해 결측값을 확인할 수 있다.

image

  • airquality : 뉴욕의 공기질을 측정한 데이터
  • is.na(x) : 결측값이면 T , 아니면 F 반환

image

  • 행 별로 결측이 없는 지 출력 (5행은 있으므로 F)

image

결측값 처리

  • PimaIndiansDiabetes2 데이터를 사용하여 특정 컬럼 삭제

image

단순 대치법

  • 결측값을 그럴듯한 값으로 대체하는 통계적 기법
  • 완전 분석법(결측값이 있는 행 삭제), 평균 대치법(결측 값을 평균 값으로 변경) 등 존재

image

  • dim : 전체 행의 수 확인 , na.omit : 결측값이 존재하는 모든 행 삭제

image

  • 결측값이면 평균값으로 대체, 결측값이 아니면 원본 유지 방법
  • ifelse 방식과 리스트 요소 직접 접근 방식 두 가지가 존재한다.

이상값

  • 데이터의 범위에서 많이 벗어난 값
  • 분석 모형을 구축할 때 나쁜 영향을 끼치는 경우가 많으므로 전처리 단계에서 처리가 필요

이상값 판별

  • 통계적 기법의 ESD, 기하평균, 사분위수 등 활용
  • ESD : 평균에서 3 표준편차보다 큰 값들을 이상값으로 판별

image

  • abs(x-mean(x)) / sd (x) < 3 을 통한 ESD 계산 방식

image

image

> box_score$out # $out 변수를 이용한 이상값 확인
[1] 200
> box_score$stats # $stats 변수를 이용한 5가지 수치
     [,1]
[1,]   60  # 최솟값
[2,]   65  # 제 1사분위
[3,]   70  # 제 2사분위 (중위수)
[4,]   75  # 제 3사분위
[5,]   75  # 최댓값

<박스 플롯의 최솟값과 최댓값 내의 데이터 필터링>
> min_score <- box_score$stats[1]
> max_score <- box_score$stats[5]
> library(dplyr)
> df_score %>% filter(score >= min_score
+                     & score <= max_score)
    name score
1   Bell    65
2 Cherry    60
3    Don    70
4   Jake    75

<IQR 함수를 이용한 이상값 - 1.5IQR 또는 2IQR 기준)
> min_score <- median(df_score$score) - 2 * IQR(df_score$score)
> max_score <- median(df_score$score) + 2 * IQR(df_score$score)
> df_score %>% filter(score >= min_score & score <= max_score)
반응형
profile

제육's 휘발성 코딩

@sasca37

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 맞구독은 언제나 환영입니다^^