Do it R 에서 제공하는 분석 도전 문제 풀이 입니다. 123쪽의 문제 입니다. ggplot2의 midwest 데이터를 사용하여 데이터 분석을 실습하는 문제 입니다. midwest는 미국 동북중부 437개 지역의 인구 통계 정보를 담고 있습니다.

 

먼저 문제를 풀기 전에 필요한 패키지를 불러오겠습니다. 우리는 변수의 이름을 바꿔야 하므로 dplyr 패키지를 불러와야 하고 ggplot2 패키지 내의 데이터를 사용하기 때문에 ggplot2 패키지를 불러옵니다. 그 후 데이터 프레임을 만듭니다.

library(dplyr)
library(ggplot2)
#데이터 프레임 불러오기
midwest_raw<-as.data.frame(ggplot2::midwest)

 

1. ggplot2의 midwest 데이터를 데이터 프레임 형태로 불러온 다음 데이터의 특징을 파악하세요.

데이터를 불러왔으면 가장 먼저 데이터 프레임의 복사본을 생성하는 것이 좋습니다. 변수를 가공하면서 실수 등으로 데이터가 손실될 수 있기 때문입니다. 1번 문제는 데이터의 특징을 파악하는 문제 입니다. str() 함수와 View() 함수로 데이터를 간략히 파악하여 보았습니다. summrary() 함수나 head() 함수 등을 사용하여 파악할 수도 있습니다.

#데이터 프레임의 복사본 생성하기
midwest_new<-midwest_raw

#1번 문제
str(midwest_new)
View(midwest_new)

 

2. poptotal(전체인구) 변수를 total로, popasian(아시안 인구) 변수를 asian으로 수정하세요.

rename() 함수를 사용해서 변수의 이름을 바꿀 수 있습니다.

#2번 문제
midwest_new <- rename(midwest_new, total=poptotal)
midwest_new <- rename(midwest_new, asian=popasian)

 

3. total, asian 변수를 이용해 '전체 인구 대비 아시아 인구 백분율' 파생변수를 만들고, 히스토그램을 만들어 도시들이 어떻게 분포하는지 살펴보세요.

파생 변수를 만들고 hist() 함수를 이용하여 히스토그램을 출력합니다.

#3번 문제
midwest_new$percasian <- (midwest_new$asian / midwest_new$total) * 100
hist(midwest_new$percasian)

 

4. 아시아 인구 백분율 전체 평균을 구하고, 평균을 초과하면 "large", 그 외에는 "small"을 부여하는 파생변수를 만들어 보세요.

평균을 구하고 ifelse() 함수를 이용하여 파생변수를 만듭니다.

#4번 문제
percasian_mean <- mean(midwest_new$percasian)
percasian_mean
## [1] 0.4872462
midwest_new$mean <- ifelse(midwest_new$percasian > percasian_mean, "large", "small")

5. "large"와 "small"에 해당하는 지역이 얼마나 되는지 빈도표와 빈도 막대 그래프를 만들어 확인해 보세요.

#5번 문제
table(midwest_new$mean)
## large small 
##  119   318 
qplot(midwest_new$mean)

Source code

https://github.com/ark1st/Doit_R_ARKS_CODE/blob/master/midwest_123p

 

 

// 참고자료

영우, 『쉽게 배우는 R 데이터 분석』, 이지스 퍼블리싱, 2019

이영호, "확률과통계"  가천대학교, 2019.03.21

'Study > Data Mining' 카테고리의 다른 글

통계적 가설 검정  (0) 2019.05.31
Do it R 분석 도전 (midwest) - 160  (0) 2019.04.17
Kaggle  (0) 2019.03.15
R language  (0) 2019.03.15
EDA (탐색적 데이터 분석)  (0) 2019.03.14

+ Recent posts