본문 바로가기
데이터분석 찍어먹기/R

4일차 - 데이터 다뤄보기 [정제-7장]

by dbdbdeeep 2024. 7. 18.

"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분위수를 사용하여, 이상치를 판단할 수 있다.