2年分のデータを用いて国勢調査の小地域(町丁・字等別,ポリゴン)に人口変化及び人口変化率を示す.
ライブラリ:sf
,tidyverse
境界データのダウンロード
#2020年
Odawara_shi_map20 <-
read_sf("A002005212020DDSWC14206/r2ka14206.shp")
#2010年
Odawara_shi_map10 <-
read_sf("A002005212010DDSWC14206/h22ka14206.shp")
統計データのダウンロード
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_CODE
がcharacter
(文字データ),統計データはinteger
(数データ)のため結合できない.
Odawara_shi_pop_#
)のKEY_CODE
をcharacter
に変換(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
.統計データを用いて人口変化(増減)と人口変化(増減)率を計算.
データ結合2
2010年と2020年のデータを横方向に結合.
cbind()
:データを横方向に結合.右側(Odawara_shi20
)のデータの列名はすべて「~.1」に自動変更.人口変化と人口変化率
diff_pop
と名付ける.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による地理空間データの可視化