RからeStatのAPIを使ってみる(その2)
はじめに
Rからe-Statを使うお勉強の記録.@yutannihilation さん作成のestatapi
というパッケージがあり,それを使ったらとても楽だった.使い方は以下のページに書いてある.
https://qiita.com/kazutan/items/9c0b2dd0f055fde45cda
不登校の児童生徒の数
今回は,文部科学省の「児童生徒の問題行動・不登校等生徒指導上の諸課題に関する調査」という調査を使ってみて,都道府県別1000人あたりの不登校児童の数をグラフにしてみた.日本地図については谷村先生作成のNipponMap
というパッケージを使った.使い方は以下のサイトを参考にした.
https://oku.edu.mie-u.ac.jp/~okumura/stat/nippon.html
使ったコード
library(pacman)
p_load(estatapi, keyring,dplyr, stringr,NipponMap,RColorBrewer)
key_set("e-stat")
# 統計表の検索 00400304は児童生徒の問題行動・不登校等生徒指導上の諸課題に関する調査
statsList <-
estat_getStatsList(
appId = key_get("e-stat"),
searchWord = "",
statsCode = "00400304"
)
str(statsList)
lists <- statsList %>%
filter(str_detect(TITLE, "不登校児童生徒数"))
id_vector <- pull(lists, "@id")
# メタ情報
meta_info <-
estat_getMetaInfo(appId = key_get("e-stat"), statsDataId = id_vector[1])
names(meta_info)
# 実際のデータを取得
df <- estat_getStatsData(
appId = key_get("e-stat"),
statsDataId = id_vector[1],
cdCat02 = c("120", "140"), #小学校と中学校
cdArea = meta_info$area$"@code"[2:48] #1番目は全国なので除外
)
df2017 <- df %>%
rename("year" = "時間軸(年度次)") %>%
filter(year == "2017年度", 学校種類 == "小学校", cat01_code == "120")
df2017_jhs <- df %>%
rename("year" = "時間軸(年度次)") %>%
filter(year == "2017年度", 学校種類 == "中学校", cat01_code == "120")
# 小学生をplot
kenmei <- df2017$地域
br <- seq(3, 9, 1)
color <- brewer.pal(6, "Reds")
cols <- as.character(cut(df2017$value, breaks = br, labels = color))
names(cols) = kenmei
leg <- c("3-4人","4-5人", "5-6人","6-7人", "7-8人", "8-9人")
png("images/scref_es2017.png", width=6, height=5, res=300,units="in")
par(family = "HiraKakuProN-W3")
JapanPrefMap(col = cols)
title("小学生1000人あたりの不登校児童数(2017年度)", sub="出典「児童生徒の問題行動・不登校等生徒指導上の諸課題に関する調査」")
legend("right",legend=leg , fill = color)
dev.off()
# 中学生をplot
max(df2017_jhs$value)
br <- seq(20,50, 5)
color <- brewer.pal(6, "Greens")
cols <- as.character(cut(df2017_jhs$value, breaks = br, labels = color))
names(cols) = kenmei
leg <- c("20-25人","25-30人", "30-35人","35-40人", "40-45人")
png("images/scref_jhs2017.png", width=6, height=5, res=300,units="in")
par(family = "HiraKakuProN-W3")
JapanPrefMap(col = cols)
title("中学生1000人あたりの不登校生徒数(2017年度)", sub="出典「児童生徒の問題行動・不登校等生徒指導上の諸課題に関する調査」")
legend("right",legend=leg , fill = color[1:5])
dev.off()