Chapter 2 데이터 세트의 생성
사용할 패키지 불러오기
library(ggmap)
library(ggplot2)
library(raster)
library(rgeos)
library(maptools)
library(rgdal)
library(tidyverse)
2.1 시도 데이터 세트
생성
앞의 “지리정보”에는 시도에 대한 데이터가 data
슬롯에 포함되어 있다.
즉, shp_CTPRVN@data
에 시도에 대한 데이터가 수록되어 있는데, 이를 data_CTPRVN
이라는 변수에 대입한다.
<- shp_CTPRVN@data
data_CTPRVN str(data_CTPRVN)
## 'data.frame': 17 obs. of 3 variables:
## $ CTPRVN_CD : chr "11" "26" "27" "28" ...
## $ CTP_ENG_NM: chr "Seoul" "Busan" "Daegu" "Incheon" ...
## $ CTP_KOR_NM: chr "서울특별시" "부산광역시" "대구광역시" "인천광역시" ...
head(data_CTPRVN)
## CTPRVN_CD CTP_ENG_NM CTP_KOR_NM
## 0 11 Seoul 서울특별시
## 1 26 Busan 부산광역시
## 2 27 Daegu 대구광역시
## 3 28 Incheon 인천광역시
## 4 29 Gwangju 광주광역시
## 5 30 Daejeon 대전광역시
- CTPRNVN_CD : 시도 코드(2자리)
- CTP_ENG_NM, CTP_KOR_NM : 시도 영문/한글명
2.2 시도 지리정보 데이터 세트
생성
shp_CTPRVN
은 S4 클래스 구조인데, 이를 데이터 프레임 형태의 지리정보 데이터 세트(shp_result
)로 변환한다.
ggplot2
패키지의 fortify()
함수를 이용하여 shp_CTPRVN
변수를 데이터 프레임으로 변환한다.
이때 region = "CTPRVN_CD"
를 인수로 이용한다.
<- fortify(shp_CTPRVN, region="CTPRVN_CD") shp_result
## SpP is invalid
str(shp_result)
## 'data.frame': 798838 obs. of 7 variables:
## $ long : num 127 127 127 127 127 ...
## $ lat : num 37.6 37.6 37.6 37.6 37.6 ...
## $ order: int 1 2 3 4 5 6 7 8 9 10 ...
## $ hole : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
## $ piece: Factor w/ 2228 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ id : chr "11" "11" "11" "11" ...
## $ group: Factor w/ 4558 levels "11.1","11.2",..: 1 1 1 1 1 1 1 1 1 1 ...
head(shp_result)
## long lat order hole piece id group
## 1 127.1108 37.63841 1 FALSE 1 11 11.1
## 2 127.1108 37.63841 2 FALSE 1 11 11.1
## 3 127.1109 37.63826 3 FALSE 1 11 11.1
## 4 127.1110 37.63821 4 FALSE 1 11 11.1
## 5 127.1116 37.63803 5 FALSE 1 11 11.1
## 6 127.1116 37.63799 6 FALSE 1 11 11.1
- id : 시도 코드(2자리)
- 나머지 컬럼들 : 좌표계를 포함한 지리정보
2.3 ’시도 데이터 세트와 '시도 지리정보 데이터 세트
의 결합
시도 데이터 세트
에는 좌표계 정보가 포함되어 있지 않다. (시도 코드와 시도 한글/영문명 으로 구성)
반면에 시도 지리 정보 데이터 세트
에는 좌표계 정보가 포함되어 있지만 시도명
에 대한 데이터가 포함되어 있지 않다.(시도 코드와 좌표계 정보 포함)
이제 시도 지리정보 데이터 세트
에 시도 데이터 세트
에 있는 시도 영문/한글명
컬럼을 결합하기 위해, 왼쪽 테이블과 오른쪽 테이블 그리고 결합 key를 확인한다.
- 왼쪽 테이블 :
shp_result
(시도 지리정보 데이터 세트), 주키 :id
- 오른쪽 테이블 :
data_CTPRVN
, 주키 :CTPRVN_CD
- 왼쪽 테이브과 오른쪽 테이블을 결합하기 위한 key의 이름이 다름다.
이제 데이터 세트를 left_join()
함수를 이용하여 결합한다. (inner_join()
함수를 사용해도 같은 결과)
<- shp_result %>% left_join(data_CTPRVN, by = c("id" = "CTPRVN_CD"))
result str(result)
## 'data.frame': 798838 obs. of 9 variables:
## $ long : num 127 127 127 127 127 ...
## $ lat : num 37.6 37.6 37.6 37.6 37.6 ...
## $ order : int 1 2 3 4 5 6 7 8 9 10 ...
## $ hole : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
## $ piece : Factor w/ 2228 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ id : chr "11" "11" "11" "11" ...
## $ group : Factor w/ 4558 levels "11.1","11.2",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ CTP_ENG_NM: chr "Seoul" "Seoul" "Seoul" "Seoul" ...
## $ CTP_KOR_NM: chr "서울특별시" "서울특별시" "서울특별시" "서울특별시" ...
head(result)
## long lat order hole piece id group CTP_ENG_NM CTP_KOR_NM
## 1 127.1108 37.63841 1 FALSE 1 11 11.1 Seoul 서울특별시
## 2 127.1108 37.63841 2 FALSE 1 11 11.1 Seoul 서울특별시
## 3 127.1109 37.63826 3 FALSE 1 11 11.1 Seoul 서울특별시
## 4 127.1110 37.63821 4 FALSE 1 11 11.1 Seoul 서울특별시
## 5 127.1116 37.63803 5 FALSE 1 11 11.1 Seoul 서울특별시
## 6 127.1116 37.63799 6 FALSE 1 11 11.1 Seoul 서울특별시