"Do it! 쉽게 배우는 R 데이터 분석"
책을 참고하여 R을 공부했으며, 글을 작성했습니다.
☑️결측치 정제
🔍 결측치 찾기
0) df
1) is.na()
# 논리형으로 반환(참, 거짓)
is.na(df)
# True -> na 존재
2) table(is.na(df))
# 참, 거짓 -> 개수 반환
table(is.na(df))
# 결측치 : 2개
🔍 결측치 제거
결측치가 있으면, 평균 및 여러 연산에 있어 사용이 불가하다.
그러므로 결측치는 제거를 해야한다.
1) !is.na(filter())
!is na()를 filter에 적용
# NA 제거하는 방법
df %>%
filter(!is.na(score)) %>%
summarise(mean(score))
score에 결측치가 있어, 평균연산이 안되었지만
결측치를 제거 후 이상없이 연산이 잘 되는 모습을 보인다.
2) na.rm = T
# 함수에서 제공하는 NA 제거 옵션(na.rm = T)
mean(df$score, na.rm = T)
3) na.omit()
# 모든 NA 제거
df_omit <- na.omit(df)
🔍 결측치 대체
데이터 작고, 결측치가 많은 경우
결측치를 제거하면 너무 많은 데이터가 손실돼 분석 결과의 왜곡 발생
왜곡되는 문제를 보완하기 위해, 다른값으로 대체
0) exam
1) 평균값 대체
mean(exam$math, na.rm = T)
# 결측치 제외하고, math 평균 반환
2) ifelse() + NA 값 -> 평균값
exam$math <- ifelse(is.na(exam$math), 58.76471, exam$math)
🔻
결측치를 평균값으로 이상없이 대체하였다.
☑️이상치 정제
🔍 이상치 제거
정상 범주에서 크게 벗어난 값을 이상치라고 한다.
이상치가 포함되어 있으면 분석 결과가 왜곡되기 때문에, 이상치를 제거하는 작업을 거쳐야 한다.
1) 존재할 수 없는 값
2) 극단적인 값
이상치는 결측치로 변경 후, 결측치를 제거하거나 대체하는 방법이 있다.
0) outlier
성별과 점수에 둘다 이상치가 존재한다
1) 이상치 -> 결측치 처리
outlier$sex <- ifelse(outlier$sex == 3, NA, outlier$sex)
# 값 3 -> 결측치, 나머지 유지
outlier$score <- ifelse(outlier$score > 5, NA, outlier$score)
두 열의 이상치 값들을 NA로 변경하였다.
추후 상황에 맞게, 평균값이나 0 으로 대체할 수 있다.
🔍 이상치 확인 -> 통계적 판단(= 데이터 기반 판단)
0) cty_bp
1) $stats
cty_bp$stats
# 분위수 확인
위와 같이 boxplot과 4분위수를 사용하여, 이상치를 판단할 수 있다.
'데이터분석 찍어먹기 > R' 카테고리의 다른 글
6일차 - 데이터 분석 [실습_9장] (0) | 2024.07.24 |
---|---|
5일차 - 데이터 다뤄보기[그래프_8장] (1) | 2024.07.19 |
3일차 - 데이터 다뤄보기 [가공_6장] (0) | 2024.07.12 |
2일차 - R 데이터 다뤄보기 [기초_1장] (0) | 2024.07.10 |
1일차 - R 이랑 친해지기 [1-4장] (0) | 2024.07.05 |