学歴別賃金プロファイル

概要

令和5年賃金構造基本統計調査の標準労働者のデータを使って,学歴(高校,大学,大学院)別の賃金プロファイルをグラフにする(男性と女性それぞれについて作成する)。また,大学卒労働者について企業規模別の賃金プロファイルをグラフにする。

コードと実行結果

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.2     ✔ tibble    3.2.1
✔ lubridate 1.9.4     ✔ tidyr     1.3.1
✔ purrr     1.0.4     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(estatapi)
このサービスは、政府統計総合窓口(e-Stat)のAPI機能を使用していますが、サービスの内容は国によって保証されたものではありません。
standard <- estat_getStatsData(
  appId = appID,
  cdTab = c("42", "44"),
  statsDataId = "0003447178", 
  cdCat01 = c("02", "03"),         # 性別 男・女
  cdCat02 = c("03", "06", "07"),   # 学歴 高校・大学・大学院
  cdCat05 = "01",                  # 産業計
  cdTime = c("2023000000")
) |>
  select(
    表章項目,
    性別_基本,
    cat03_code,
    `学歴_基本8区分(2020年~)`,
    企業規模_基本,
    value
  ) |>
  mutate(
    age = as.numeric(cat03_code) + 14,
    gender = factor(
      性別_基本,
      levels = c("男", "女")
    ),
    education = factor(
      `学歴_基本8区分(2020年~)`, 
      levels = c("大学院", "大学", "高校")
    ),
    firm_size = factor(
      企業規模_基本,
      levels = c(
        "企業規模計(10人以上)", 
        "1,000人以上",
        "100~999人", 
        "10~99人"
      )
    )
  ) |>
  pivot_wider(
    names_from = "表章項目",
    values_from = "value"
  ) |>
  mutate(
    wage = (所定内給与額 * 12 + 年間賞与その他特別給与額) / 10
  )
Fetching record 1-2448... (total: 2448 records)
standard |>
  filter(
    firm_size == "企業規模計(10人以上)",
    age <= 60,
    ! is.na(wage)
  ) |>
  ggplot(aes(x = age, y = wage, color =  education)) +
  geom_line() +
  geom_point() +
  scale_color_hue(name = "学歴") +
  labs(
    title = "標準労働者の学歴別賃金プロファイル",
    x = "年齢",
    y = "年収(万円)"
  ) +
  facet_wrap(~ gender) +
  theme_classic()

standard |>
  filter(
    education == "大学",
    firm_size != "企業規模計(10人以上)",
    age <= 60,
    ! is.na(wage)
  ) |>
  ggplot(aes(x = age, y = wage, color = firm_size)) +
  geom_line() +
  geom_point() +
  scale_color_hue(name = "企業規模") +
  labs(
    title = "大学卒標準労働者の企業規模別賃金プロファイル",
    x = "年齢",
    y = "年収(万円)"
  ) +
  facet_wrap(~ gender) +
  theme_classic()