Pg 133. 혼자서 해보기

Q1. 자동차 배기량에 따라 고속도로 연비가 다른지 알아보려고 합니다. displ(배기량)이 4이하인 자동차와 5이상인 자동차 중 어떤 자동차의 hyw(고속도로 연비)가 평균적으로 더 높은지 알아보세요.

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
mpg <- as.data.frame(ggplot2::mpg)
summary(mpg)
##  manufacturer          model               displ            year     
##  Length:234         Length:234         Min.   :1.600   Min.   :1999  
##  Class :character   Class :character   1st Qu.:2.400   1st Qu.:1999  
##  Mode  :character   Mode  :character   Median :3.300   Median :2004  
##                                        Mean   :3.472   Mean   :2004  
##                                        3rd Qu.:4.600   3rd Qu.:2008  
##                                        Max.   :7.000   Max.   :2008  
##       cyl           trans               drv                 cty       
##  Min.   :4.000   Length:234         Length:234         Min.   : 9.00  
##  1st Qu.:4.000   Class :character   Class :character   1st Qu.:14.00  
##  Median :6.000   Mode  :character   Mode  :character   Median :17.00  
##  Mean   :5.889                                         Mean   :16.86  
##  3rd Qu.:8.000                                         3rd Qu.:19.00  
##  Max.   :8.000                                         Max.   :35.00  
##       hwy             fl               class          
##  Min.   :12.00   Length:234         Length:234        
##  1st Qu.:18.00   Class :character   Class :character  
##  Median :24.00   Mode  :character   Mode  :character  
##  Mean   :23.44                                        
##  3rd Qu.:27.00                                        
##  Max.   :44.00
a <- mpg %>% filter(displ <= 4)
b <- mpg %>% filter(displ >= 5)
mean(a$hwy)
## [1] 25.96319
mean(b$hwy)
## [1] 18.07895

그러므로, displ(배기량)이 4이하인 자동차의 고속도로 연비가 5이하인 자동차보다 평균적으로 더 높다.

Q2. 자동차 제조회사에 따라 도시 연비가 다른지 알아보려고 합니다. “audi”와 “toyota”중 어느 manufacturer(자동차 제조 회사)의 cty(도시연비)가 평균적으로 더 높은지 알아보세요.

library("dplyr")
audi <- mpg %>% filter(manufacturer == "audi")
toyota <- mpg %>% filter(manufacturer == "toyota")
mean(audi$cty)
## [1] 17.61111
mean(toyota$cty)
## [1] 18.52941

그러므로, “toyota”의 도시 연비가 “audi”의 도시연비 보다 평균적으로 더 높다.

Q3. “chevrolet”, “ford”, “honda” 자동차의 고속도로 연비 평균을 알아보려고 합니다. 이 회사들의 데이터를 추출한 후 hwy 전체 평균을 구해 보세요.

library("dplyr")
Z <- mpg %>% filter(manufacturer %in% c("chevrolet", "ford", "honda"))
summary(Z)
##  manufacturer          model               displ            year     
##  Length:53          Length:53          Min.   :1.600   Min.   :1999  
##  Class :character   Class :character   1st Qu.:3.600   1st Qu.:1999  
##  Mode  :character   Mode  :character   Median :4.600   Median :1999  
##                                        Mean   :4.245   Mean   :2003  
##                                        3rd Qu.:5.400   3rd Qu.:2008  
##                                        Max.   :7.000   Max.   :2008  
##       cyl           trans               drv                 cty       
##  Min.   :4.000   Length:53          Length:53          Min.   :11.00  
##  1st Qu.:6.000   Class :character   Class :character   1st Qu.:13.00  
##  Median :8.000   Mode  :character   Mode  :character   Median :15.00  
##  Mean   :6.679                                         Mean   :16.13  
##  3rd Qu.:8.000                                         3rd Qu.:18.00  
##  Max.   :8.000                                         Max.   :28.00  
##       hwy             fl               class          
##  Min.   :14.00   Length:53          Length:53         
##  1st Qu.:17.00   Class :character   Class :character  
##  Median :21.00   Mode  :character   Mode  :character  
##  Mean   :22.51                                        
##  3rd Qu.:26.00                                        
##  Max.   :36.00
mean(Z$hwy)
## [1] 22.50943

그러므로, “chevrolet”, “ford”, “honda” 자동차의 고속도로 전체 평균은 “22.50943”입니다.

Pg 138. 혼자서 해보기

Q1. mpg 데이터는 11개 변수로 구성되어 있습니다. 이 중 일부만 추출해 분석에 활용하려고 합니다. mpg 데이터에서 class(자동차 종류), cty(도시 연비) 변수를 추출해 새로운 데이터를 만드세요. 새로 만든 데이터의 일부를 출력해 두 변수로만 구성되어 있는지 확인하세요.

mpg_class_cty <- as.data.frame(mpg %>% select(class, cty))
head(mpg_class_cty)

Q2. 자동차 종류에 따라 도시 연비가 다른지 알아보려고 합니다. 앞에서 추출한 데이터를 이용해 class(자동차 종류)가 “suv”인 자동차와 “compact”인 자동차 중 어떤 자동차의 cty(도시 연비) 평균이 더 높은지 알아보세요.

library(dplyr)
suv <- mpg_class_cty %>% filter(class == "suv")
compact <- mpg_class_cty %>% filter(class == "compact")
mean(suv$cty)
## [1] 13.5
mean(compact$cty)
## [1] 20.12766

그러므로, “compact”인 자동차의 cty(도시 연비) 평균(20.12766)이 “suv”인 자동차의 평균(13.5)보다 더 높습니다.

Pg 141. 혼자서 해보기

Q1. “audi”에서 생산한 자동차 중에 어떤 자동차 모델의 hwy(고속도로 연비)가 높은지 알아보려고 합니다. “audi”에서 생산한 자동차 중 hwy가 1~5위에 해당하는 자동차의 데이터를 출력하세요.

library(dplyr)
audi_hwy <- mpg %>% filter(manufacturer == "audi") %>% select(model, hwy)
audi_hwy %>% arrange(desc(hwy)) %>% head(5)

Pg 144. 혼자서 해보기

Q1. mpg()데이터 복사본을 만들고, ctyhwy를 더한 ’합산 연비 변수’를 추가하세요.

library(dplyr)
mpg_copy <- as.data.frame(mpg)
mpg_copy <- mpg_copy %>% mutate(total = mpg_copy$cty + mpg_copy$hwy)
summary(mpg_copy)
##  manufacturer          model               displ            year     
##  Length:234         Length:234         Min.   :1.600   Min.   :1999  
##  Class :character   Class :character   1st Qu.:2.400   1st Qu.:1999  
##  Mode  :character   Mode  :character   Median :3.300   Median :2004  
##                                        Mean   :3.472   Mean   :2004  
##                                        3rd Qu.:4.600   3rd Qu.:2008  
##                                        Max.   :7.000   Max.   :2008  
##       cyl           trans               drv                 cty       
##  Min.   :4.000   Length:234         Length:234         Min.   : 9.00  
##  1st Qu.:4.000   Class :character   Class :character   1st Qu.:14.00  
##  Median :6.000   Mode  :character   Mode  :character   Median :17.00  
##  Mean   :5.889                                         Mean   :16.86  
##  3rd Qu.:8.000                                         3rd Qu.:19.00  
##  Max.   :8.000                                         Max.   :35.00  
##       hwy             fl               class               total     
##  Min.   :12.00   Length:234         Length:234         Min.   :21.0  
##  1st Qu.:18.00   Class :character   Class :character   1st Qu.:31.0  
##  Median :24.00   Mode  :character   Mode  :character   Median :41.0  
##  Mean   :23.44                                         Mean   :40.3  
##  3rd Qu.:27.00                                         3rd Qu.:47.0  
##  Max.   :44.00                                         Max.   :79.0

Q2. 앞에서 만든 ’합산 연비 변수’를 2로 나눠 ’평균 연비 변수’를 추가하세요.

library(dplyr)
mpg_copy <- mpg_copy %>% mutate(mean = mpg_copy$total/2)
summary(mpg_copy)
##  manufacturer          model               displ            year     
##  Length:234         Length:234         Min.   :1.600   Min.   :1999  
##  Class :character   Class :character   1st Qu.:2.400   1st Qu.:1999  
##  Mode  :character   Mode  :character   Median :3.300   Median :2004  
##                                        Mean   :3.472   Mean   :2004  
##                                        3rd Qu.:4.600   3rd Qu.:2008  
##                                        Max.   :7.000   Max.   :2008  
##       cyl           trans               drv                 cty       
##  Min.   :4.000   Length:234         Length:234         Min.   : 9.00  
##  1st Qu.:4.000   Class :character   Class :character   1st Qu.:14.00  
##  Median :6.000   Mode  :character   Mode  :character   Median :17.00  
##  Mean   :5.889                                         Mean   :16.86  
##  3rd Qu.:8.000                                         3rd Qu.:19.00  
##  Max.   :8.000                                         Max.   :35.00  
##       hwy             fl               class               total     
##  Min.   :12.00   Length:234         Length:234         Min.   :21.0  
##  1st Qu.:18.00   Class :character   Class :character   1st Qu.:31.0  
##  Median :24.00   Mode  :character   Mode  :character   Median :41.0  
##  Mean   :23.44                                         Mean   :40.3  
##  3rd Qu.:27.00                                         3rd Qu.:47.0  
##  Max.   :44.00                                         Max.   :79.0  
##       mean      
##  Min.   :10.50  
##  1st Qu.:15.50  
##  Median :20.50  
##  Mean   :20.15  
##  3rd Qu.:23.50  
##  Max.   :39.50

Q3. ’평균 연비 변수’가 가장 높은 자동차 3종의 데이터를 출력하세요.

mpg_copy %>% arrange(desc(mpg_copy$mean)) %>% head(3)

Q4. 1~3번 문제를 해결할 수 있는 하나로 연결되 dplyr구문을 만들어 실행해 보세요. 데이터는 복사본 대신 mpg원본을 이용하세요.

mpg %>% dplyr::mutate(total = mpg$cty + mpg$hwy,
                      mean = total/2) %>% 
                      arrange(desc(mean)) %>% 
                      head(3)

Pg 150. 혼자서 해보기

Q1. mpg 데이터의 class는 “suv”, “compact” 등 자동차를 특징에 따라 일곱 종류로 분류한 변수입니다. 어떤 차종의 도시 연비가 높은지 비교해 보려고 합니다. class별 cty평균을 구해 보세요.

mpg %>% group_by(class) %>% 
  summarise(mean_cty = mean(cty))
## `summarise()` ungrouping output (override with `.groups` argument)

Q2. 앞 문제의 출력 결과는 class값 알파벳 순으로 정렬되어 있습니다. 어떤 차종의 도시 연비가 높은지 쉽게 알아볼 수 있도록 cty 평균이 높은 순으로 정렬해 출력하세요.

mpg %>% group_by(class) %>% 
  summarise(mean_cty = mean(cty)) %>% 
  arrange(desc(mean_cty))
## `summarise()` ungrouping output (override with `.groups` argument)

Q3. 어떤 회사 자동차의 hwy(고속도로 연비)가 가장 높은지 알아보려고 합니다. hwy평균이 가장 높은 회사 세 곳을 출력하세요.

mpg %>% group_by(manufacturer) %>% 
  summarise(mean_hwy = mean(hwy)) %>% 
  arrange(desc(mean_hwy))
## `summarise()` ungrouping output (override with `.groups` argument)

Q4. 어떤 회사에서 “compact”(경차) 차종을 가장 많이 생산하는지 알아보려고 합니다. 각 회사별 “compact” 차종 수를 내림차순으로 정렬해 출력하세요.

mpg %>% filter(class == "compact") %>% 
  group_by(manufacturer) %>% 
  summarise(count = n()) %>% 
  arrange(desc(count))
## `summarise()` ungrouping output (override with `.groups` argument)