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()