정상 범주에서 크게 벗어난 값
-> 이상치 포함시 분석 결과 왜곡
-> 결측처리 후 제외하고 분석
존재할 수 없는 값
ex) 성별 변수에 3 -> 결측 처리
극단적인 값
ex) 몸무게 변수에 230 -> 정상 범위 기준 정해서 결측 처리
존재할 수 없는 값
outlier <- data.frame(s = c(1,2,1,3,2,1),
score = c(5,4,3,4,2,6))
outlier
s score
1 1 5
2 2 4
3 1 3
4 3 4
5 2 2
6 1 6
table(outlier$s)
1 2 3
3 2 1
table(outlier$score)
2 3 4 5 6
1 1 2 1 1
outliers == 3, NA, outlier$s)
outlierscore == 6, NA, outlier$score)
outlier
ifelse() 함수를 사용하여 이상치 값을 NA로 처리
s 열에서 값이 3인 경우 NA로 변환
score 열에서 값이 6인 경우 NA로 변환

outlier %>%
filter(!is.na(s) & !is.na(score)) %>%
group_by(s) %>%
summarise(mean_score = mean(score))
filter()를 사용하여 결측치(NA)가 아닌 데이터를 필터링한다.
group_by(s)를 사용하여 성별 기준으로 그룹화한 뒤,
summarise(mean_score = mean(score))를 통해 각 성별의 평균 점수를 계산한다.
s mean_score
<dbl> <dbl>
1 1 4
2 2 3

정상 범위 기준 정해서 벗어나면 결측 처리
install.packages('ggplot2')
library(ggplot2)
mpg 데이터프레임을 불러온다.
mpg <- as.data.frame(ggplot2::mpg)
mpg
boxplot(mpg$hwy)
boxplot(mpgstats
'''
[1,] 12 # 아래쪽 극단치 경계
[2,] 18 # 1사분위수
[3,] 24 # 중앙값
[4,] 27 # 3사분위수
[5,] 37 # 위쪽 극단치 경계
'''


그림출처: EXCEL, SPSS, R로 배우는 통계학입문/강상욱/자유아카데미/2014
mpg$hwy가 12 ~ 37를 벗어나면 이상치로 간주하여 NA를 할당한다.
mpghwy < 12 | mpghwy)
table(is.na(mpg$hwy))
FALSE TRUE
231 3

drv 기준으로 그룹화하고,
결측치를 제외한 hwy의 평균을 계산한다.
mpg %>%
group_by(drv) %>%
summarise(mean_hwy = mean(hwy, na.rm = T))
drv mean_hwy
<chr> <dbl>
1 4 19.2
2 f 27.7
3 r 21
