챕터 9 서울시 급똥 지도
생각만해도 무시무시한 상황이 있다. 바로 ’급똥이 마려울 때’다. 이럴 때는 어떻게 해야할까? datatoys
의 seoulRestroom
데이터셋을 이용해 급똥이 마려울 때 화장실을 찾아보자. 이는 서울시 공중화장실 현황정보를 제공한다.
## 'data.frame': 5046 obs. of 4 variables:
## $ 주소(구): chr "송파구" "노원구" "노원구" "강북구" ...
## $ 주소(동): chr "마천동" "하계동" "하계동" "수유동" ...
## $ 위도 : num 37.5 37.6 37.6 37.6 37.7 ...
## $ 경도 : num 127 127 127 127 127 ...
열의 이름에 괄호가 들어가 있다. 이런 경우 dplyr
패키지의 rename()
함수를 이용해 열의 이름을 변경할 수 있다.
## 'data.frame': 5046 obs. of 4 variables:
## $ 구이름: chr "송파구" "노원구" "노원구" "강북구" ...
## $ 동이름: chr "마천동" "하계동" "하계동" "수유동" ...
## $ 위도 : num 37.5 37.6 37.6 37.6 37.7 ...
## $ 경도 : num 127 127 127 127 127 ...
또는 jonitor
패키지의 clean_names()
함수를 사용할 수도 있다.
##
## Attaching package: 'janitor'
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
먼저 가장 화장실에 진심인 동네를 찾아보자.
## # A tibble: 20 × 2
## 주소_구 화장실개수
## <chr> <int>
## 1 영등포구 835
## 2 서초구 447
## 3 중구 327
## 4 송파구 275
## 5 은평구 263
## 6 강서구 247
## 7 광진구 216
## 8 성북구 205
## 9 강남구 201
## 10 마포구 178
## 11 성동구 159
## 12 강동구 157
## 13 노원구 157
## 14 종로구 143
## 15 동작구 129
## 16 양천구 126
## 17 용산구 124
## 18 동대문구 123
## 19 구로구 121
## 20 중랑구 113
## `summarise()` has grouped output by '주소_구'. You can override using the `.groups` argument.
## # A tibble: 20 × 3
## # Groups: 주소_구 [10]
## 주소_구 주소_동 화장실개수
## <chr> <chr> <int>
## 1 영등포구 여의도동 211
## 2 서초구 서초동 198
## 3 영등포구 영등포동 94
## 4 영등포구 신길동 89
## 5 서초구 방배동 82
## 6 영등포구 양평동 75
## 7 영등포구 대림동 73
## 8 서초구 양재동 69
## 9 노원구 상계동 61
## 10 영등포구 문래동 58
## 11 구로구 구로동 56
## 12 도봉구 창동 49
## 13 은평구 응암동 49
## 14 강서구 등촌동 48
## 15 서초구 반포동 47
## 16 중구 신당동 47
## 17 광진구 화양동 43
## 18 송파구 잠실동 43
## 19 송파구 가락동 42
## 20 송파구 방이동 41
여의도동이 211개로 가장 많았고 서초동이 뒤를 이었다. ggplot2
를 사용해 시각화 해보자.
restroom %>%
group_by(주소_구, 주소_동) %>%
summarise(화장실개수 = n()) %>%
arrange(desc(화장실개수)) %>%
head(20) %>%
ggplot(aes(x = reorder(주소_동, 화장실개수), y = 화장실개수)) +
geom_col() +
geom_text(aes(label = 화장실개수), hjust = -0.) +
coord_flip() +
ggthemes::theme_fivethirtyeight(base_family="NanumGothic") +
labs(
title = "급똥이 마려울 때 생존 확률이 높은 동네 TOP 20",
subtitle = "서울시 구별 화장실 개수"
)
## `summarise()` has grouped output by '주소_구'. You can override using the `.groups` argument.
마지막으로 실제 서울시 화장실의 위치를 시각화해보자.
library(leaflet)
leaflet(seoulRestroom) %>%
addTiles() %>%
setView(lng = 126.9784, lat = 37.566, zoom = 11) %>%
addProviderTiles('CartoDB.Positron') %>%
addCircles(lng = ~경도, lat = ~위도,
label = ~`주소(동)`)
보다 자세한 화장실 위치가 파악 된다. 부디 급똥이 마려울 때 이 지도를 참고해 최악의 상황을 피하길 기원한다.