産業構造・職業構成の変化
国勢調査から,産業構造(就業者の産業別割合)および就業者の職業構成の変化をグラフ化する。
データはe-statのAPIで入手可能。産業については,1920年以降のデータがあるが,1925年と30年についてはAPIに登録されておらず,1945年は国勢調査が実施されていないため,データが入手できない。また,日本標準産業分類の変更に伴い,国勢調査の産業分類が2000年以前と2005年以降で異なる (ただし,1995年と2000年については新旧両方の分類のデータが公開されている)。そのため,厳密には変更前後でデータを完全に接続することはできないが,ここでは簡易的に新旧の分類を統合してグラフを作成している。
コード
library(tidyverse)
library(estatapi)
library(RColorBrewer)
library(stringi)
# e-statのappIDが必要
# 以下のページで利用申請(無料)をすればだれでも入手できる
# https://www.e-stat.go.jp/api/
# appID <- "入手したappIDをここに設定"
# 産業(大分類),男女別15歳以上就業者数
# -全国(平成7年~令和2年)※平成19年11月改訂後
industry_latest <-
estat_getStatsData(
appId = appID,
statsDataId = "0003410395",
cdTab = "2020_44", # 表章項目 == "人口構成比 [産業別]"
cdCat01From = 120, # 産業分類
cdCat01To = 330, # 総数,小計,再掲などを除く
cdCat02 = 100 # 男女_時系列 == "総数"
) |>
filter(substring(time_code, 9, 10) == "00") |>
mutate(
year = as.numeric(time_code) / 1000000,
industry = `産業大分類2015`
) |>
select(year, industry, value)
#【参考】産業(旧大分類),男女別15歳以上就業者数及び産業別割合
# -全国(大正9年~平成12年)※平成14年3月改訂前
industry_old <-
estat_getStatsData(
appId = appID,
statsDataId = "0003410396",
cdTab = "2020_44", # 表章項目 == "人口構成比 [産業別]"
cdCat01From = 120, # 産業分類
cdCat01Tob = 330, # 総数を除く
cdCat02 = 100, # 男女_時系列 == "総数"
) |>
filter(cat01_code != 150 & cat01_code != 190) %>% # 小計(第n次産業)を除く
mutate(
year = as.numeric(time_code) / 1000000,
industry = `産業大分類(平成14年3月改訂前)`
) |>
select(year, industry, value) |>
filter(year <= 1990)
# 新旧分類を統合して,産業を以下のように分類
industries <-
c(
"農林漁業",
"鉱業",
"建設業",
"製造業",
"電気・ガス・熱供給・水道業",
"情報通信業",
"運輸業(1990年以前は通信業含む)",
"卸売・小売(1990年以前は飲食店含む)",
"金融・保険業",
"不動産業(1995年以降は物品賃貸業含む)",
"サービス業(1995年以前)",
"学術研究,専門・技術サービス業",
"宿泊業,飲食サービス業",
"生活関連サービス業,娯楽業",
"教育,学習支援業",
"医療,福祉",
"複合サービス事業",
"その他のサービス業",
"公務",
"分類不能"
)
## 1995年以降(新産業分類)
industry_since1995 <- industry_latest |>
pivot_wider(names_from = industry) |>
mutate(
`農林漁業` = `A農業,林業` + `B漁業`,
`鉱業` = `C鉱業,採石業,砂利採取業`,
`建設業` = `D建設業`,
`製造業` = `E製造業`,
`電気・ガス・熱供給・水道業` = `F電気・ガス・熱供給・水道業`,
`情報通信業` = `G情報通信業`,
`運輸業(1990年以前は通信業含む)` = `H運輸業,郵便業`,
`卸売・小売(1990年以前は飲食店含む)` = `I卸売業,小売業`,
`金融・保険業` = `J金融業,保険業`,
`不動産業(1995年以降は物品賃貸業含む)` = `K不動産業,物品賃貸業`,
`学術研究,専門・技術サービス業` = `L学術研究,専門・技術サービス業`,
`宿泊業,飲食サービス業` = `M宿泊業,飲食サービス業`,
`生活関連サービス業,娯楽業` = `N生活関連サービス業,娯楽業`,
`教育,学習支援業` = `O教育,学習支援業`,
`医療,福祉` = `P医療,福祉`,
`複合サービス事業` = `Q複合サービス事業`,
`その他のサービス業` = `Rサービス業(他に分類されないもの)`,
`公務` = `S公務(他に分類されるものを除く)`,
`分類不能` = `T分類不能の産業`
) |>
select(year, `農林漁業`:`分類不能`) |>
pivot_longer(-year, names_to = "industry") |>
mutate(industry = factor(industry, levels = industries))
## 1990年以前(旧産業分類)
industry_before1995 <- industry_old |>
pivot_wider(names_from = industry) |>
mutate(
`農林漁業` = `A農業` + `B林業` + `C漁業`,
`鉱業` = `D鉱業`,
`建設業` = `E建設業`,
`製造業` = `F製造業`,
`電気・ガス・熱供給・水道業` = `G電気・ガス・熱供給・水道業`,
`運輸業(1990年以前は通信業含む)` = `H運輸・通信業`,
`卸売・小売(1990年以前は飲食店含む)` = `I卸売・小売業,飲食店`,
`金融・保険業` = `J金融・保険業`,
`不動産業(1995年以降は物品賃貸業含む)` = `K不動産業`,
`サービス業(1995年以前)` = `Lサービス業`,
`公務` = `M公務(他に分類されないもの)`,
`分類不能` = `N分類不能の産業`
) |>
select(year, `農林漁業`:`分類不能`) |>
pivot_longer(-year, names_to = "industry") |>
mutate(industry = factor(industry, levels = industries))
#### Plot
industry <- rbind(industry_since1995, industry_before1995)
clr <- c(brewer.pal(11, "Paired"), brewer.pal(8, "YlOrBr"), "#FFFFFF")
graph_industry <- industry |>
mutate(year = as.factor(year)) |>
ggplot(aes(x = year, y = value, fill = industry)) +
geom_bar(
stat = "identity",
color = "black",
linewidth = 0.5
) +
scale_fill_manual(name = "産業", values = clr) +
scale_x_discrete(guide = guide_axis(n.dodge = 2)) +
labs(x = "年", y = "", title = "産業構造の変化") +
theme_classic(base_size = 16)
plot(graph_industry)職業については,産業と異なり,APIで入手できるのは1960年以降。また,日本標準職業分類の変更に伴い,データはその前後で完全には接続できない (1995~2005年については新旧両方の分類のデータが公開されている)。そのため,厳密には変更前後でデータを完全に接続することはできないが,ここでは簡易的に新旧の分類を統合してグラフを作成している。なお,職業構成の変化は労働力調査からも確認できる。
コード
library(tidyverse)
library(estatapi)
library(RColorBrewer)
library(stringi)
# e-statのappIDが必要
# 以下のページで利用申請(無料)をすればだれでも入手できる
# https://www.e-stat.go.jp/api/
# appID <- "入手したappIDをここに設定"
# 国勢調査・時系列データ・人口の労働力状態,就業者の産業・職業 表番号7
# 職業(大分類),男女別15歳以上就業者数-全国(平成7年~令和2年)
occupation_latest <-
estat_getStatsData(
appId = appID,
statsDataId = "0003410408",
cdTab = "2020_45", # 表章項目 == "人口構成比 [職業別]"
cdCat01From = 110, # 職業分類
cdCat01To = 220, #
cdCat02 = 100 # 男女_時系列 == "総数")
) |>
filter(substring(time_code, 9, 10) == "00") |>
mutate(
year = as.numeric(time_code) / 1000000,
occupation = `職業大分類2015`
) |>
select(year, occupation, value)
# 【参考】職業(旧大分類),男女別15歳以上就業者数及び産業別割合
# -全国(昭和25年~平成17年)※平成21年12月改訂前
occupation_old <-
estat_getStatsData(
appId = appID,
statsDataId = "0003410409",
cdTab = "2020_45", # 表章項目 == "割合"
cdCat01From = 110, # 職業分類
cdCat01To = 200, #
cdCat02 = 100 # 男女_時系列 == "総数")
) |>
mutate(
year = as.numeric(time_code) / 1000000,
occupation = `職業大分類(旧大分類H21改定前)`
) |>
select(year, occupation, value) |>
filter(year <= 1990)
# 新旧統合分類を作成
occupations <-
c(
"専門的・技術的職業",
"管理的職業",
"事務職",
"販売職",
"サービス職",
"保安職",
"農林漁業作業",
"運輸・通信(1990年以前)",
"輸送・機械運転",
"生産工程(1990年以前は労務作業を含む)",
"建設・採掘",
"運搬・清掃・包装等",
"分類不能"
)
## 1995年以降
occupation_since1995 <- occupation_latest |>
pivot_wider(names_from = occupation) |>
mutate(
`専門的・技術的職業` = `B専門的・技術的職業従事者`,
`管理的職業` = `A管理的職業従事者`,
`事務職` = `C事務従事者`,
`販売職` = `D販売従事者`,
`サービス職` = `Eサービス職業従事者`,
`保安職` = `F保安職業従事者`,
`農林漁業作業` = `G農林漁業従事者`,
`輸送・機械運転` = `I輸送・機械運転従事者`,
`建設・採掘` = `J建設・採掘従事者`,
`運搬・清掃・包装等` = `K運搬・清掃・包装等従事者`,
`生産工程(1990年以前は労務作業を含む)` = `H生産工程従事者`,
`分類不能` = `L分類不能の職業`
) |>
select(year, `専門的・技術的職業`:`分類不能`) |>
pivot_longer(-year, names_to = "occupation") |>
mutate(occupation = factor(occupation, levels = occupations))
## 1990年以前
occupation_before1995 <- occupation_old |>
pivot_wider(names_from = occupation) |>
mutate(
`専門的・技術的職業` = `A専門的・技術的職業従事者`,
`管理的職業` = `B管理的職業従事者`,
`事務職` = `C事務従事者`,
`販売職` = `D販売従事者`,
`サービス職` = `Eサービス職業従事者`,
`保安職` = `F保安職業従事者`,
`農林漁業作業` = `G農林漁業作業者`,
`運輸・通信(1990年以前)` = `H運輸・通信従事者`,
`生産工程(1990年以前は労務作業を含む)` = `I生産工程・労務作業者`,
`分類不能` = `J分類不能の職業`
) |>
select(year, `専門的・技術的職業`:`分類不能`) |>
pivot_longer(-year, names_to = "occupation") |>
mutate(occupation = factor(occupation, levels = occupations))
# Plot
occupation <- rbind(occupation_before1995, occupation_since1995)
clr <- c(brewer.pal(7, "Accent"), brewer.pal(5, "YlOrRd"), "#FFFFFF")
graph_occupation <- occupation |>
mutate(year = as.factor(year)) |>
ggplot(aes(x = year, y = value, fill = occupation)) +
geom_bar(
stat = "identity",
color = "black",
linewidth = 0.5
) +
scale_fill_manual(name = "職業", values = clr) +
scale_x_discrete(guide = guide_axis(n.dodge = 2)) +
labs(x = "年", y = "", title = "職業構成の変化") +
theme_classic(base_size = 16)
plot(graph_occupation)