혼자서 해보기

1.

mpg 데이터를 이용해서 분석 문제를 해결해 보세요.

mpg 데이터 원본에는결측치가 없습니다. 우선 mpg 데이터를 불러와 몇 개의 값을 결측치로 만들겠습니다. 아래 코드를 실행하면 다섯 행의 hwy 변수에 NA가 할당됩니다.

mpg <- as.data.frame(ggplot2::mpg)

mpg[c(65, 124, 131, 153, 212), “hwy”] <- NA

Q1. drv(구동방식)별로 hwy(고속도로 연비) 평균이 어떻게 다른지 알아보려고 합니다. 분석을 하기 전에 우선 두 변수에 결측치가 있는지 확인해야 합니다. drv 변수와 hwy 변수에 결측치가 몇 개 있는지 알아보세요.

mpg <- as.data.frame(ggplot2::mpg)        

mpg[c(65, 124, 131, 153, 212), "hwy"] <- NA 

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  

2.

mpg 데이터를 이용해서 분석 문제를 해결해 보세요. 우선 mpg 데이터를 불러와서 일부러 이상치를 만들겠습니다. drv(구동방식) 변수의 값은 4(사륜구동), f(전륜구동), r(후륜구동) 세 종류로 되어있습니다. 몇 개의 행에 존재할 수 없는 값 k를 할당하겠습니다. cty(도시 연비) 변수도 몇 개의 행에 극단적으로 크거나 작은 값을 할당하겠습니다.

mpg <- as.data.frame(ggplot2::mpg) # mpg 데이터 불러오기 mpg[c(10, 14, 58, 93), “drv”] <- “k” # drv 이상치 할당 mpg[c(29, 43, 129, 203), “cty”] <- c(3, 4, 39, 42) # cty 이상치 할당

이상치가 들어있는 mpg 데이터를 활용해서 문제를 해결해보세요. 구동방식별로 도시 연비가 다른지 알아보려고 합니다. 분석을 하려면 우선 두 변수에 이상치가 있는지 확인하려고 합니다.

Q1. drv에 이상치가 있는지 확인하세요. 이상치를 결측 처리한 다음 이상치가 사라졌는지 확인하세요. 결측 처리 할 때는 %in% 기호를 활용하세요

mpg <- data.frame(ggplot2::mpg)
mpg[c(10,14,58,93),"drv"] <- "k"
mpg[c(29,43,129,203),"cty"] <- c(3,4,39,42)

table(mpg$drv)

  4   f   k   r 
100 106   4  24 
table(mpg$cty)

 3  4  9 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 33 35 39 42 
 1  1  5 20  8 20 18 24 19 14 26 20 11 23  4  3  5  2  3  2  1  1  1  1  1 
mpg$drv <- ifelse(mpg$drv %in% c("4","r","f"),mpg$drv,NA)

table(ifelse(mpg$drv %in% c("4","r","f"),mpg$drv,NA))

  4   f   r 
100 106  24 

Q2. 상자 그림을 이용해서 cty에 이상치가 있는지 확인하세요. 상자 그림의 통계치를 이용해 정상 범위를 벗어난 값을 결측 처리한 후 다시 상자 그림을 만들어 이상치가 사라졌는지 확인하세요.

boxplot(mpg$cty)$stats
     [,1]
[1,]    9
[2,]   14
[3,]   17
[4,]   19
[5,]   26
mpg$cty <- ifelse(mpg$cty < boxplot(mpg$cty)$stats[1,] | mpg$cty > boxplot(mpg$cty)$stats[5,],NA,mpg$cty)

boxplot(mpg$cty)

Q3. 두 변수의 이상치를 결측처리 했으니 이제 분석할 차례입니다. 이상치를 제외한 다음 drv별로 cty 평균이 어떻게 다른지 알아보세요. 하나의 dplyr 구문으로 만들어야 합니다.

mpg %>% filter(!is.na(drv) & !is.na(cty)) %>% group_by(drv) %>% summarise(mean_cty=mean(cty))
# A tibble: 3 x 2
  drv   mean_cty
  <chr>    <dbl>
1 4         14.2
2 f         19.5
3 r         14.0