exam <- read.csv("csv_exam.csv")
dplyr::glimpse(exam)
## Observations: 20
## Variables: 5
## $ id <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,...
## $ class <int> 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, ...
## $ math <int> 50, 60, 45, 30, 25, 50, 80, 90, 20, 50, 65, 45, 46, 48...
## $ english <int> 98, 97, 86, 98, 80, 89, 90, 78, 98, 98, 65, 85, 98, 87...
## $ science <int> 50, 60, 78, 58, 65, 98, 45, 25, 15, 45, 65, 32, 65, 12...
exam %>% summarise(mean_math = mean(math))
## mean_math
## 1 57.45
**group_by() 는 출력결과를 데이터프레임의 업그레이드 버전인 tibble 형태로 만들어줌.
exam %>%
group_by(class) %>%
summarise(mean_math = mean(math))
## # A tibble: 5 x 2
## class mean_math
## <int> <dbl>
## 1 1 46.25
## 2 2 61.25
## 3 3 45.00
## 4 4 56.75
## 5 5 78.00
exam %>%
group_by(class) %>%
summarise(mean_math = mean(math),
sum_math = sum(math),
median_math = median(math),
n = n())
## # A tibble: 5 x 5
## class mean_math sum_math median_math n
## <int> <dbl> <int> <dbl> <int>
## 1 1 46.25 185 47.5 4
## 2 2 61.25 245 65.0 4
## 3 3 45.00 180 47.5 4
## 4 4 56.75 227 53.0 4
## 5 5 78.00 312 79.0 4
n()은 데이터가 몇 행으로 되어 있는지 ’빈도’를 구하는 기능
mpg %>%
group_by(manufacturer, drv) %>%
summarise(mean_city = mean(cty)) %>%
head(10)
## # A tibble: 10 x 3
## # Groups: manufacturer [5]
## manufacturer drv mean_city
## <chr> <chr> <dbl>
## 1 audi 4 16.81818
## 2 audi f 18.85714
## 3 chevrolet 4 12.50000
## 4 chevrolet f 18.80000
## 5 chevrolet r 14.10000
## 6 dodge 4 12.00000
## 7 dodge f 15.81818
## 8 ford 4 13.30769
## 9 ford r 14.75000
## 10 honda f 24.44444
회사별로 “suv” 자동차의 도시 및 고속도로 통합연비 평균을 구해 내림차순으로 정렬하고, 1~5위까지 출력하기
mpg %>%
group_by(manufacturer) %>%
filter(class == "suv") %>%
mutate(mean = (cty + hwy)/2) %>%
arrange(desc(mean)) %>%
head(5)
## # A tibble: 5 x 12
## # Groups: manufacturer [1]
## manufacturer model displ year cyl trans drv cty hwy
## <chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int>
## 1 subaru forester awd 2.5 2008 4 manual(m5) 4 20 27
## 2 subaru forester awd 2.5 2008 4 auto(l4) 4 20 26
## 3 subaru forester awd 2.5 2008 4 manual(m5) 4 19 25
## 4 subaru forester awd 2.5 1999 4 manual(m5) 4 18 25
## 5 subaru forester awd 2.5 1999 4 auto(l4) 4 18 24
## # ... with 3 more variables: fl <chr>, class <chr>, mean <dbl>
**Q1. mpg 데이터의 class는 “suv”, “compact” 등 자동차를 틍징에 따라 일곱 종류로 분류한 변수입니다. 어떤 자동차의 연비가 높은지 비교해 보려고 합니다. class별 cty 평균을 구해보세요.
mpg <- as.data.frame(ggplot2::mpg)
mpg %>%
group_by(class) %>%
summarise(mean_city = mean(cty))
## # A tibble: 7 x 2
## class mean_city
## <chr> <dbl>
## 1 2seater 15.40000
## 2 compact 20.12766
## 3 midsize 18.75610
## 4 minivan 15.81818
## 5 pickup 13.00000
## 6 subcompact 20.37143
## 7 suv 13.50000
**Q2. 앞 문제의 출력결과는 class 값 알파벳 순으로 정렬되어 있습니다. 어떤 차종의 도시 연비가 높은지 쉽게 알아볼 수 있도록 cty 평균이 높은 순으로 정렬해 출력하세요.
mpg %>%
group_by(class) %>%
summarise(mean_city = mean(cty)) %>%
arrange(desc(mean_city))
## # A tibble: 7 x 2
## class mean_city
## <chr> <dbl>
## 1 subcompact 20.37143
## 2 compact 20.12766
## 3 midsize 18.75610
## 4 minivan 15.81818
## 5 2seater 15.40000
## 6 suv 13.50000
## 7 pickup 13.00000
**Q3. 어떤 회사 자동차의 hwy(고속도로 연비)가 가장 높은지 알아보려 합니다. hwy 평균이 가장 높은 회사 세곳을 출력하세요.
mpg %>%
group_by(manufacturer) %>%
summarise(mean_hwy = mean(hwy)) %>%
arrange(desc(mean_hwy)) %>%
head(3)
## # A tibble: 3 x 2
## manufacturer mean_hwy
## <chr> <dbl>
## 1 honda 32.55556
## 2 volkswagen 29.22222
## 3 hyundai 26.85714
Q4. 어떤 회사에서 “compact” (경차) 차종을 가장 많이 생산하는지 알아보려고 합니다. 각 회사별 “compact” 차종 수를 내림차순으로 정렬해 출력하세요.
mpg %>%
group_by(manufacturer) %>%
filter(class == "compact") %>%
summarise(count = n()) %>%
arrange(desc(count))
## # A tibble: 5 x 2
## manufacturer count
## <chr> <int>
## 1 audi 15
## 2 volkswagen 14
## 3 toyota 12
## 4 subaru 4
## 5 nissan 2