Study/Data Mining
Do it R 분석 도전 (midwest) - 160
Ark1st
2019. 4. 17. 00:50
Do it R 에서 제공하는 분석 도전 문제 풀이 입니다. 160쪽의 문제 입니다. 이번에도 ggplot2의 midwest 데이터를 사용하여 데이터 분석을 실습하는 문제 입니다.
패키지와 문제에 필요한 데이터를 불러오고 사본을 만듭니다.
library(ggplot2)
library(dplyr)
midwest_raw <- as.data.frame(ggplot2::midwest)
midwest_new <- midwest_raw
View() 등으로 데이터를 파악한 뒤 바로 문제를 풀어 보았습니다.
1. popadults는 해당 지역의 성인 인구, poptotal은 전체 인구를 나타냅니다. midwest 데이터에 '전체 인구 대비 미성년 인구 백분율' 변수를 추가하세요.
#1번 문제
midwest_new <- midwest_new %>% mutate(percyouth = (poptotal - popadults)/poptotal * 100)
2. 미성년 인구 백분율이 가장 높은 상위 5개 county(지역)의 미성년 인구 백분율을 출력하시오.
#2번 문제
midwest_new %>% arrange(desc(percyouth)) %>%
select(county, percyouth) %>%
head(5)
## county percyouth
## 1 ISABELLA 51.50117
## 2 MENOMINEE 50.59126
## 3 ATHENS 49.32073
## 4 MECOSTA 49.05918
## 5 MONROE 47.35818
3. 다음과 같은 분류표의 기준에 따라 미성년 비율 등급 변수를 추가하고, 각 등급에 몇 개의 지역이 있는지 알아보세요.
분류 | 기준 |
---|---|
large | 40% 이상 |
middle | 30 ~ 40% 미만 |
small | 30% 미만 |
#3번 문제
midwest_new <- midwest_new %>%
mutate(gradeyouth = ifelse(percyouth >= 40 ,"large",
ifelse(percyouth >= 30,"middle","small")))
table(midwest_new$gradeyouth)
## large middle small
## 32 396 9
4. popasian은 해당 지역의 아시아인 인구를 나타냅니다. '전체 인구 대비 아시아인 인구 백분율' 변수를 추가하고 하위 10개 지역의 state(주), county(지역), 아시아인 인구 백분율을 출력하세요.
#4번 문제
midwest_new <- midwest_new %>%
mutate(ratio_asian = popasian/poptotal*100)
midwest_new %>% arrange(ratio_asian) %>%
select(state, county, ratio_asian) %>%
head(10)
## state county ratio_asian
## 1 WI MENOMINEE 0.00000000
## 2 IN BENTON 0.01059210
## 3 IN CARROLL 0.01594981
## 4 OH VINTON 0.02703190
## 5 WI IRON 0.03250447
## 6 IL SCOTT 0.05315379
## 7 IN CLAY 0.06071645
## 8 MI OSCODA 0.06375925
## 9 OH PERRY 0.06654625
## 10 IL PIATT 0.07074865
Source code
https://github.com/ark1st/Doit_R_ARKS_CODE/blob/master/midwest_160p%EF%BB%BF
// 참고자료
김영우, 『쉽게 배우는 R 데이터 분석』, 이지스 퍼블리싱, 2019
이영호, "확률과통계" 가천대학교, 2019