티스토리 뷰
> #함수의 결측치 제외 기능 이용하기 - na.rm = T
> mean(df$score, na.rm=T)
[1] 4
> library(dplyr)
> df %>% filter(is.na(score))
sex score
1 F NA
> df %>% filter(!is.na(score))
sex score
1 M 5
2 F 4
3 <NA> 3
4 M 4
> sum(df_nomiss$score)
[1] 16
> df_nomiss <- df %>% filter(!is.na(score)&!is.na(sex))
> df_nomiss
sex score
1 M 5
2 F 4
3 M 4
> df <- data.frame(sex = c("M", "F", NA, "M", "F"),
+ score = c(5, 4, 3, 4, NA))
> df
sex score
1 M 5
2 F 4
3 <NA> 3
4 M 4
5 F NA
> is.na(df)
sex score
[1,] FALSE FALSE
[2,] FALSE FALSE
[3,] TRUE FALSE
[4,] FALSE FALSE
[5,] FALSE TRUE
> anyNA(df)
[1] TRUE
> table(is.na(df))
FALSE TRUE
8 2
> table(is.na(df$sex))
FALSE TRUE
4 1
> table(is.na(df$score))
간단하게 na.omit()
> df_nomiss <- na.omit(df)
> df_nomiss
sex score
1 M 5
2 F 4
4 M 4
#함수의 결측치 제외 기능 이용하기 - na.rm = T
> mean(df$score, na.rm=T)
[1] 4
exam %>% summarise(mean_math = mean(math, na.rm = T), # 평균 산출
sum_math = sum(math, na.rm = T), # 합계 산출
median_math = median(math, na.rm = T)) # 중앙값 산출
# 결측치 대체법(Imputation)
• 대표값(평균, 최빈값 등)으로 일괄 대체
• 통계분석 기법 적용, 예측값 추정해서 대체
#평균값으로 결측치 대체하기
> mean(exam$math, na.rm = T)
[1] 58.17647
> #평균으로 대체하기
> exam$math <- ifelse(is.na(exam$math), 58, exam$math)
> table(is.na(exam$math))
FALSE
20
mpg 데이터를 이용해서 분석
> library(ggplot2)
> mpg
> mpg <- as.data.frame(mpg)
> colnames(mpg)
[1] "manufacturer" "model" "displ" "year" "cyl" "trans"
[7] "drv" "cty" "hwy" "fl" "class"
> mpg[c(65, 124, 131, 153, 212), "hwy"] <- NA
> table(is.na(mpg))
FALSE TRUE
2569 5
• Q1. drv(구동방식)별로 hwy(고속도로 연비) 평균이 어떻게 다른지 알아보려고 합니다. 분석을 하기 전에 우선 두 변수에 결측치가 있는지 확인해야 합니다. drv 변수와 hwy 변수에 결측치가 몇 개 있는지 알아보세요.
> table(is.na(mpg$drv))
FALSE
234
> table(is.na(mpg$hwy))
FALSE TRUE
229 5
Q2. filter()를 이용해 hwy 변수의 결측치를 제외하고, 어떤 구동방식의 hwy 평균이 높은지 알아보세요. 하나의 dplyr 구문으로 만들어야 합니다.
> mpg %>%
+ filter(!is.na(hwy)) %>%
+ group_by(drv) %>%
+ summarise(mean_hwy=mean(hwy))
# A tibble: 3 x 2
drv mean_hwy
<chr> <dbl>
1 4 19.2
2 f 28.2
3 r 21
728x90
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
반응형