아래의 자료는 2010년 행정구역 인구자료이다.
census <- read.csv("F:/work/2019/발표/vis-master/day3/101_DT_1IN1002_F_2010.csv", skip=2)
head(census)
## C행정구역별.읍면동. 행정구역별.읍면동. 시점 총인구..명. 남자..명.
## 1 '00 전국 2010 48580293 24167098
## 2 '03 동부 2010 39822647 19798739
## 3 '04 읍부 2010 4200082 2117515
## 4 '05 면부 2010 4557564 2250844
## 5 '11 서울특별시 2010 9794304 4803373
## 6 '11010 종로구 2010 155575 76408
## 여자..명. 내국인.계..명. 내국인.남자..명. 내국인.여자..명.
## 1 24413195 47990761 23840896 24149865
## 2 20023908 39363373 19558869 19804504
## 3 2082567 4149215 2086063 2063152
## 4 2306720 4478173 2195964 2282209
## 5 4990931 9631482 4726028 4905454
## 6 79167 151069 74331 76738
## 외국인.계..명. 외국인.남자..명. 외국인.여자..명. 가구.계..가구.
## 1 589532 326202 263330 17574067
## 2 459274 239870 219404 14224508
## 3 50867 31452 19415 1504690
## 4 79391 54880 24511 1844869
## 5 162822 77345 85477 3577497
## 6 4506 2077 2429 60008
## 일반가구..가구. 집단가구..가구. 외국인가구..가구. 주택.계..호.
## 1 17339422 20727 213918 14677419
## 2 14031069 12420 181019 11262799
## 3 1487490 2631 14569 1460243
## 4 1820863 5676 18330 1954377
## 5 3504297 2836 70364 2525210
## 6 57807 152 2049 41350
## 단독주택..호. 아파트..호. 연립주택..호. 다세대주택..호.
## 1 4089491 8576013 536070 1314452
## 2 2006683 7487900 425615 1226377
## 3 544997 765456 73145 57696
## 4 1537811 322657 37310 30379
## 5 405575 1485869 145914 463417
## 6 14429 11067 5504 9621
## 비거주용.건물내.주택..호. 주택이외의.거처..호.
## 1 161393 303097
## 2 116224 270518
## 3 18949 9816
## 4 26220 22763
## 5 24435 97389
## 6 729 2998
제일 앞의 행정구역별(읍면동)은 숫자코드로 구성되어 있고 이 코드는 shp의 코드와 같다.
따라서 merge를 통해 인구자료와 지도파일을 결합할 수 있고, 이를 시각화 할 수 있다.
kosis.kr에서 확인가능한 시도/시군구/읍면동 자료는 모두 시각화가 가능하다.
library(rgdal)
## Loading required package: sp
## rgdal: version: 1.4-6, (SVN revision 841)
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 2.2.3, released 2017/11/20
## Path to GDAL shared files: C:/Users/SANGHOOJEFFREY/Documents/R/win-library/3.6/rgdal/gdal
## GDAL binary built with GEOS: TRUE
## Loaded PROJ.4 runtime: Rel. 4.9.3, 15 August 2016, [PJ_VERSION: 493]
## Path to PROJ.4 shared files: C:/Users/SANGHOOJEFFREY/Documents/R/win-library/3.6/rgdal/proj
## Linking to sp version: 1.3-1
# 1. 시도단위
hrr.shp<-readOGR("F:/work/2019/발표/vis-master/day3/CTPRVN_201703/TL_SCCO_CTPRVN.shp", verbose=TRUE)
## OGR data source with driver: ESRI Shapefile
## Source: "F:\work\2019\발표\vis-master\day3\CTPRVN_201703\TL_SCCO_CTPRVN.shp", layer: "TL_SCCO_CTPRVN"
## with 17 features
## It has 3 fields
plot(hrr.shp) # plot shape file in R
hrr.shp@data
## 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 대전광역시
## 6 31 Ulsan 울산광역시
## 7 36 Sejong-si 세종특별자치시
## 8 41 Gyeonggi-do 경기도
## 9 42 Gangwon-do 강원도
## 10 43 Chungcheongbuk-do 충청북도
## 11 44 Chungcheongnam-do 충청남도
## 12 45 Jeollabuk-do 전라북도
## 13 46 Jellanam-do 전라남도
## 14 47 Gyeongsangbuk-do 경상북도
## 15 48 Gyeongsangnam-do 경상남도
## 16 50 Jeju-do 제주특별자치도
head(census)
## C행정구역별.읍면동. 행정구역별.읍면동. 시점 총인구..명. 남자..명.
## 1 '00 전국 2010 48580293 24167098
## 2 '03 동부 2010 39822647 19798739
## 3 '04 읍부 2010 4200082 2117515
## 4 '05 면부 2010 4557564 2250844
## 5 '11 서울특별시 2010 9794304 4803373
## 6 '11010 종로구 2010 155575 76408
## 여자..명. 내국인.계..명. 내국인.남자..명. 내국인.여자..명.
## 1 24413195 47990761 23840896 24149865
## 2 20023908 39363373 19558869 19804504
## 3 2082567 4149215 2086063 2063152
## 4 2306720 4478173 2195964 2282209
## 5 4990931 9631482 4726028 4905454
## 6 79167 151069 74331 76738
## 외국인.계..명. 외국인.남자..명. 외국인.여자..명. 가구.계..가구.
## 1 589532 326202 263330 17574067
## 2 459274 239870 219404 14224508
## 3 50867 31452 19415 1504690
## 4 79391 54880 24511 1844869
## 5 162822 77345 85477 3577497
## 6 4506 2077 2429 60008
## 일반가구..가구. 집단가구..가구. 외국인가구..가구. 주택.계..호.
## 1 17339422 20727 213918 14677419
## 2 14031069 12420 181019 11262799
## 3 1487490 2631 14569 1460243
## 4 1820863 5676 18330 1954377
## 5 3504297 2836 70364 2525210
## 6 57807 152 2049 41350
## 단독주택..호. 아파트..호. 연립주택..호. 다세대주택..호.
## 1 4089491 8576013 536070 1314452
## 2 2006683 7487900 425615 1226377
## 3 544997 765456 73145 57696
## 4 1537811 322657 37310 30379
## 5 405575 1485869 145914 463417
## 6 14429 11067 5504 9621
## 비거주용.건물내.주택..호. 주택이외의.거처..호.
## 1 161393 303097
## 2 116224 270518
## 3 18949 9816
## 4 26220 22763
## 5 24435 97389
## 6 729 2998
census$C행정구역별.읍면동. <- sub("^\\'", "", census$C행정구역별.읍면동.)
head(census)
## C행정구역별.읍면동. 행정구역별.읍면동. 시점 총인구..명. 남자..명.
## 1 00 전국 2010 48580293 24167098
## 2 03 동부 2010 39822647 19798739
## 3 04 읍부 2010 4200082 2117515
## 4 05 면부 2010 4557564 2250844
## 5 11 서울특별시 2010 9794304 4803373
## 6 11010 종로구 2010 155575 76408
## 여자..명. 내국인.계..명. 내국인.남자..명. 내국인.여자..명.
## 1 24413195 47990761 23840896 24149865
## 2 20023908 39363373 19558869 19804504
## 3 2082567 4149215 2086063 2063152
## 4 2306720 4478173 2195964 2282209
## 5 4990931 9631482 4726028 4905454
## 6 79167 151069 74331 76738
## 외국인.계..명. 외국인.남자..명. 외국인.여자..명. 가구.계..가구.
## 1 589532 326202 263330 17574067
## 2 459274 239870 219404 14224508
## 3 50867 31452 19415 1504690
## 4 79391 54880 24511 1844869
## 5 162822 77345 85477 3577497
## 6 4506 2077 2429 60008
## 일반가구..가구. 집단가구..가구. 외국인가구..가구. 주택.계..호.
## 1 17339422 20727 213918 14677419
## 2 14031069 12420 181019 11262799
## 3 1487490 2631 14569 1460243
## 4 1820863 5676 18330 1954377
## 5 3504297 2836 70364 2525210
## 6 57807 152 2049 41350
## 단독주택..호. 아파트..호. 연립주택..호. 다세대주택..호.
## 1 4089491 8576013 536070 1314452
## 2 2006683 7487900 425615 1226377
## 3 544997 765456 73145 57696
## 4 1537811 322657 37310 30379
## 5 405575 1485869 145914 463417
## 6 14429 11067 5504 9621
## 비거주용.건물내.주택..호. 주택이외의.거처..호.
## 1 161393 303097
## 2 116224 270518
## 3 18949 9816
## 4 26220 22763
## 5 24435 97389
## 6 729 2998
년도별 행정구역의 파일을 다르다.
따라서 그리고자 하는 연도에 해당하는 지도 파일을 다운 받아야 한다.
http://www.gisdeveloper.co.kr/?p=2332
위의 자료에서 파일을 다운 받을 수 있다.
만약 내가 그리고자 하는 지역이 대구, 경상북도와 같은 특정한 지역이라면…
subset이나 []를 이용하여 원하는 지역의 지도만 추출할 수 있다.
setwd("F:/work/2018/7. 발표/R_vis-master/day3")
# 1. 시도단위
hrr.shp<-readOGR("CTPRVN_201703/TL_SCCO_CTPRVN.shp", verbose=TRUE)
## OGR data source with driver: ESRI Shapefile
## Source: "F:\work\2018\7. 발표\R_vis-master\day3\CTPRVN_201703\TL_SCCO_CTPRVN.shp", layer: "TL_SCCO_CTPRVN"
## with 17 features
## It has 3 fields
plot(hrr.shp) # plot shape file in R
hrr.shp@data # Check the data
## 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 대전광역시
## 6 31 Ulsan 울산광역시
## 7 36 Sejong-si 세종특별자치시
## 8 41 Gyeonggi-do 경기도
## 9 42 Gangwon-do 강원도
## 10 43 Chungcheongbuk-do 충청북도
## 11 44 Chungcheongnam-do 충청남도
## 12 45 Jeollabuk-do 전라북도
## 13 46 Jellanam-do 전라남도
## 14 47 Gyeongsangbuk-do 경상북도
## 15 48 Gyeongsangnam-do 경상남도
## 16 50 Jeju-do 제주특별자치도
# hrr.shp@data를 보면 hrr.shp@data$CTPRVN_CD 가 50인 경우 제주도입니다.
hrr.shp@data[hrr.shp@data$CTPRVN_CD==50,]
## CTPRVN_CD CTP_ENG_NM CTP_KOR_NM
## 16 50 Jeju-do 제주특별자치도
# 제주도에 해당하는 부분만 선택
jeju1.shp <- subset(hrr.shp, hrr.shp@data$CTPRVN_CD==50)
plot(jeju1.shp)
writeOGR(jeju1.shp, "F:/", layer="jeju1.shp",driver="ESRI Shapefile")
# 2. 시군구단위
sig.shp<-readOGR("SIG_201703/TL_SCCO_SIG.shp", verbose=TRUE)
## OGR data source with driver: ESRI Shapefile
## Source: "F:\work\2018\7. 발표\R_vis-master\day3\SIG_201703\TL_SCCO_SIG.shp", layer: "TL_SCCO_SIG"
## with 250 features
## It has 3 fields
plot(sig.shp)
tail(sig.shp@data,10)
## SIG_CD SIG_ENG_NM SIG_KOR_NM
## 240 48740 Changnyeong-gun 창녕군
## 241 48820 Goseong-gun 고성군
## 242 48840 Namhae-gun 남해군
## 243 48850 Hadong-gun 하동군
## 244 48860 Sancheong-gun 산청군
## 245 48870 Hamyang-gun 함양군
## 246 48880 Geochang-gun 거창군
## 247 48890 Hapcheon-gun 합천군
## 248 50110 Jeju-si 제주시
## 249 50130 Seogwipo-si 서귀포시
# sig.shp@data를 보면 50110과 50130이 제주도에 해당합니다.
# 해당지역을 선택하는 코드를 아래와 같이 짤 수 있습니다.
jeju2.shp <- subset(sig.shp, sig.shp@data$SIG_CD %in% c(50110,50130))
plot(jeju2.shp)
writeOGR(jeju2.shp, "F:/", layer="jeju2.shp",driver="ESRI Shapefile")
# # 3. 읍면동단위
# eup.shp<-readOGR("EMD_201703/TL_SCCO_EMD.shp", verbose=TRUE)
# plot(eup.shp)
#
# head(eup.shp@data)
# tail(eup.shp@data,100)
# # 제주도에 해당하는 읍면동을 확인하면 제주시는 5011로 시작하고 서귀포시는 5013으로 시작합니다.
# # 이 숫잔느 위의 시군구단위와 동일합니다.
# # substr 함수는 원하는 위치의 값만 출력할 수 있습니다.
# substr(eup.shp@data$EMD_CD,1,4)
#
# # eup.shp@data$EMC_CD가 5011 또는 5013으로 시작하는 자료만 선택하여 저장합니다.
# jeju3.shp <- subset(eup.shp, substr(eup.shp@data$EMD_CD,1,4) %in% c("5011","5013"))
# plot(jeju3.shp, axes=T, cex.axis=0.9, bg="#3366CC", col="white", border="#666666")
#
# writeORG(jeju3.shp, "jeju3.shp")
#
# rm(list=ls()) #모든 저장된 자료 제거
# 저장한 자료 가져오기
jeju1<- readOGR("jeju1.shp", verbose= TRUE)
## OGR data source with driver: ESRI Shapefile
## Source: "F:\work\2018\7. 발표\R_vis-master\day3\jeju1.shp", layer: "jeju1"
## with 1 features
## It has 4 fields
jeju2<- readOGR("jeju2.shp", verbose= TRUE)
## OGR data source with driver: ESRI Shapefile
## Source: "F:\work\2018\7. 발표\R_vis-master\day3\jeju2.shp", layer: "jeju2"
## with 2 features
## It has 4 fields
jeju3<- readOGR("jeju3.shp", verbose= TRUE)
## OGR data source with driver: ESRI Shapefile
## Source: "F:\work\2018\7. 발표\R_vis-master\day3\jeju3.shp", layer: "jeju3"
## with 74 features
## It has 4 fields
# 불러온 자료 그리
plot(jeju1, axes=T, cex.axis=0.9, bg="#3366CC", col="white", border="#666666")
plot(jeju2, axes=T, cex.axis=0.9, bg="#3366CC", col="white", border="#666666")
plot(jeju3, axes=T, cex.axis=0.9, bg="#3366CC", col="white", border="#666666")