1 目的

2年分のデータを用いて国勢調査の小地域(町丁・字等別,ポリゴン)に人口変化及び人口変化率を示す.

ライブラリ:sftidyverse

library(sf)
library(tidyverse)

2 小地域の人口の可視化

境界データのダウンロード

  • 統計地理情報システム > 境界データダウンロード > 小地域 > 国勢調査 > 2020年(または2010年) > 小地域(町丁・字等別)(JGD2000[^foot1]) > 世界測地系緯度経度・Shapefile > 14206 小田原市
#2020年
Odawara_shi_map20 <-
  read_sf("A002005212020DDSWC14206/r2ka14206.shp")

#2010年 
Odawara_shi_map10 <-
  read_sf("A002005212010DDSWC14206/h22ka14206.shp")

統計データのダウンロード

  • 統計地理情報システム > 統計データダウンロード > 小地域 > 国勢調査 > 2020年(または2010年) > 小地域(町丁・字等別) > 男女別人口総数及び世帯総数 > 14神奈川県
    • データはテキスト形式.read.tableで読込.
      • Kanagawa_pop#と名付ける.
      • header=TRUEは列名が含まれていることを意味する.仮に列名がなければFALSE.ダウンロードしたデータは2列にわたって列名がある.
      • sep=","はデータがカンマで区切られていることを意味する.skip=1は1番最初の行を削除することを意味する.後ほど,1行目にあった情報を再度加える.
      • fileEncoding="CP932":文字化け防止.
#2020年
Kanagawa_pop20 <-
  read.table("tblT001081C14/tblT001081C14.txt",
             header=TRUE, sep=",", skip=1,
             fileEncoding="CP932")

#列名の変更(1~4列目)
Kanagawa_pop20 %>%
  rename("KEY_CODE"=1, 
         "HYOSYO"=2,
         "CITYNAME"=3, 
         "NAME"=4) ->
  Kanagawa_pop20

#2010年(文字化けする場合はオプションを加える)
Kanagawa_pop10 <-
  read.table("tblT000572C14/tblT000572C14.txt", 
             header=TRUE, sep=",", skip=1,
             fileEncoding="CP932")

#列名の変更(1~4列目)
Kanagawa_pop10 %>%
  rename("KEY_CODE"=1, 
         "HYOSYO"=2,
         "CITYNAME"=3, 
         "NAME"=4) ->
  Kanagawa_pop10
  • 便宜上,小田原市の人口総数だけを抜き出す(filiter).Odawara_shi_pop#と名付ける.
Kanagawa_pop20 %>%
  filter(CITYNAME=="小田原市") ->
  Odawara_shi_pop20

Kanagawa_pop10 %>%
  filter(CITYNAME=="小田原市") ->
  Odawara_shi_pop10

人口総数

小地域の人口は「人口総数」の列に含まれているが,文字情報.

  • 数値(numeric)情報に変更(mutate)する.再び Odawara_shi_pop_#と名付ける.
    • 欠損値(データに「-」含まれる)はNAに強制変換(Warning message(警告メッセージ)が出現するが問題ない).
#2020年
Odawara_shi_pop20 %>%
  mutate(人口総数=as.numeric(人口総数)) ->
  Odawara_shi_pop20

#2010年
Odawara_shi_pop10 %>%
  mutate(人口総数=as.numeric(人口総数)) ->
  Odawara_shi_pop10

データ結合1

各年の境界データと統計データを結合.

  • 注意:境界データのKEY_CODEcharacter(文字データ),統計データはinteger(数データ)のため結合できない.
    • そこで,統計データ(Odawara_shi_pop_#)のKEY_CODEcharacterに変換(mutate)する.再度,Odawara_shi_pop_#と名付ける.
  • KEY_CODEで結合し,Odawara_shi#と名付ける.
#文字データへの変換
Odawara_shi_pop20 %>%
  mutate(KEY_CODE=as.character(KEY_CODE)) ->
  Odawara_shi_pop20

Odawara_shi_pop10 %>%
  mutate(KEY_CODE=as.character(KEY_CODE)) ->
  Odawara_shi_pop10

#データの結合
Odawara_shi20 <-
  left_join(Odawara_shi_map20, Odawara_shi_pop20, 
          by=c("KEY_CODE")) 

Odawara_shi10 <-
  left_join(Odawara_shi_map10, Odawara_shi_pop10, 
          by=c("KEY_CODE"))

人口分布の可視化

境界データにも小地域の人口(JINKO)が含まれている.したがって,人口だけを見るのであれば,統計データを結合する必要ないが,統計データの「人口総数」と値が異なる小地域が存在.

  • 下の図で確認.例えば黄色の枠の箇所.境界データではこの箇所は0

3 統計データによる人口変化の可視化

統計データを用いて人口変化(増減)と人口変化(増減)率を計算.

データ結合2

2010年と2020年のデータを横方向に結合.

  • cbind():データを横方向に結合.右側(Odawara_shi20)のデータの列名はすべて「~.1」に自動変更.
Odawara_shi<-
  cbind(Odawara_shi10, Odawara_shi20)

人口変化と人口変化率

  • 2020年の人口総数(人口総数.1)から2010年の人口総数(人口総数)を引き,人口変化をとらえる.計算された列をdiff_popと名付ける.
  • 変化率の計算式は(2020年人口ー2010年の人口)/2010年の人口)×100)の通り.計算された列をpop_rateと名付ける.
#人口変化
Odawara_shi %>%
  mutate(diff_pop=人口総数.1-人口総数) ->
  Odawara_shi

#人口変化率
Odawara_shi %>%
  mutate(pop_rate=(人口総数.1-人口総数)/人口総数*100) ->
  Odawara_shi

完成図

完成図の可視化.

  • scale_color_gradient2():中間値(初期値は0)より大きな値と小さな値で色を塗り分けることを可能にする関数.
    • ここでは,変化(率)0を白,負を青,正を赤に設定.ただし,muted()は色を落ち着かせる際に利用.muted()利用のため,scalesパッケージを呼び出す(library).
    • muted()は指示しなくても問題ない.その場合は単にlow=blueと指示.利用しない場合はscalesパッケージを呼び出す必要もない.
    • labs()に出典を含め,theme()で左寄せにする.
#muted()利用
library(scales) 

#人口変化の可視化
ggplot()+
  geom_sf(data=Odawara_shi, aes(fill=diff_pop))+
  scale_fill_gradient2(low=muted("blue"), 
                       mid="white", 
                       high=muted("red"))+
  labs(fill="人",
  caption="出典:国土交通省国土数値情報
総務省統計局平成22年,令和2年国勢調査")+
  ggtitle("人口変化(2010年~2020年)")+
  theme_bw()+
  theme(plot.caption=element_text(hjust=0))

#人口変化率の可視化
ggplot()+
  geom_sf(data=Odawara_shi, aes(fill=pop_rate))+
  scale_fill_gradient2(low=muted("blue"), 
                       mid="white", 
                       high=muted("red"))+
  labs(fill="%",
  caption="出典:国土交通省国土数値情報
総務省統計局平成22年,令和2年国勢調査")+
  ggtitle("人口変化率(2010年~2020年)")+
  theme_bw()+
  theme(plot.caption=element_text(hjust=0))

Rによる地理空間データの可視化