Current Employment Statistics - CE

Data - BLS

Information

  • Example: CES7072250003: verage hourly earnings of all employees, restaurants and other eating places, seasonally adjusted

    • CE: Data
    • S: seasonally adjusted
    • 70722500: Restaurants and other eating places
    • 03: AVERAGE HOURLY EARNINGS OF ALL EMPLOYEES

ce.industry

Code
ce.data.0.AllCESSeries |>
  left_join(ce.series, by = "series_id") |>
  left_join(ce.industry, by = "industry_code") |>
  group_by(industry_code, industry_name) |>
  summarise(Nobs = n()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

ce.supersector

Code
ce.data.0.AllCESSeries |>
  left_join(ce.series, by = "series_id") |>
  left_join(ce.supersector, by = "supersector_code") |>
  group_by(supersector_code, supersector_name) |>
  summarise(Nobs = n()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

ce.datatype

Code
ce.data.0.AllCESSeries |>
  left_join(ce.series, by = "series_id") |>
  left_join(ce.datatype, by = "data_type_code") |>
  group_by(data_type_code, data_type_text) |>
  summarise(Nobs = n()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

ce.seasonal

Code
ce.data.0.AllCESSeries |>
  left_join(ce.series, by = "series_id") |>
  rename(seasonal_code = seasonal) |>
  left_join(ce.seasonal, by = "seasonal_code") |>
  group_by(seasonal_code, seasonal_text) |>
  summarise(Nobs = n()) %>%
  {if (is_html_output()) print_table(.) else .}
seasonal_code seasonal_text Nobs
S Seasonally Adjusted 4019232
U Not Seasonally Adjusted 4340706

ce.series

Code
ce.data.0.AllCESSeries |>
  left_join(ce.series, by = "series_id") |>
  group_by(series_id, series_title) |>
  summarise(Nobs = n()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

year

Code
ce.data.0.AllCESSeries |>
  group_by(year) |>
  summarise(Nobs = n()) |>
  arrange(desc(year)) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

CES3000000008

All

Code
`ce.data.0.AllCESSeries` |>
  filter(series_id == "CES3000000008") |>
  month_to_date() |>
  mutate(wage_inflation = (value/lag(value, 12) - 1)) |>
  ggplot() + ylab("Wage Inflation") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = wage_inflation)) +
  scale_y_continuous(breaks = seq(-0.2, 0.4, 0.02),
                     labels = percent_format(acc = 1)) + 
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2020, 5), "-01-01")),
               labels = date_format("%Y"))

2000-

Code
`ce.data.0.AllCESSeries` |>
  filter(series_id == "CES3000000008") |>
  month_to_date() |>
  mutate(wage_inflation = (value/lag(value, 12) - 1)) |>
  filter(date >= as.Date("2000-01-01")) |>
  ggplot() + ylab("Wage Inflation") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = wage_inflation)) +
  scale_y_continuous(breaks = seq(-0.2, 0.4, 0.01),
                     labels = percent_format(acc = 1)) + 
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2022, 2), "-01-01")),
               labels = date_format("%Y"))

Construction, Manufacturing

2008-

Code
ce.series |>
  filter(industry_code %in% c(30000000, 20000000, 40000000),
         data_type_code == "03",
         seasonal == "S") |>
  left_join(`ce.data.0.AllCESSeries`, by = "series_id") |>
  left_join(ce.industry, by = "industry_code") |>
  month_to_date() |>
  mutate(wage_inflation = (value/lag(value, 12) - 1)) |>
  filter(date >= as.Date("2008-01-01")) |>
  ggplot() + ylab("Nominal Wage Inflation") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = wage_inflation, color = industry_name)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.4, 0.9)) +
  scale_y_continuous(breaks = seq(-0.2, 0.4, 0.01),
                     labels = percent_format(acc = 1)) + 
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2022, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0, linetype = "dashed")

2014-

Code
ce.series |>
  filter(industry_code %in% c(30000000, 20000000, 40000000),
         data_type_code == "03",
         seasonal == "S") |>
  left_join(`ce.data.0.AllCESSeries`, by = "series_id") |>
  left_join(ce.industry, by = "industry_code") |>
  month_to_date() |>
  mutate(wage_inflation = (value/lag(value, 12) - 1)) |>
  filter(date >= as.Date("2014-01-01")) |>
  ggplot() + ylab("Nominal Wage Inflation") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = wage_inflation, color = industry_name)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.4, 0.9)) +
  scale_y_continuous(breaks = seq(-0.2, 0.4, 0.01),
                     labels = percent_format(acc = 1)) + 
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2022, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0, linetype = "dashed")

Goods, Services

2008-

Code
ce.series |>
  filter(industry_code %in% c(6000000, 7000000, 5000000, 8000000),
         data_type_code == "03",
         seasonal == "S") |>
  left_join(`ce.data.0.AllCESSeries`, by = "series_id") |>
  left_join(ce.industry, by = "industry_code") |>
  month_to_date() |>
  mutate(wage_inflation = (value/lag(value, 12) - 1)) |>
  filter(date >= as.Date("2008-01-01")) |>
  ggplot() + ylab("Nominal Wage Inflation") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = wage_inflation, color = industry_name)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.4, 0.9)) +
  scale_y_continuous(breaks = seq(-0.2, 0.4, 0.01),
                     labels = percent_format(acc = 1)) + 
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2022, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0, linetype = "dashed")

2014-

Code
ce.series |>
  filter(industry_code %in% c(6000000, 7000000, 5000000, 8000000),
         data_type_code == "03",
         seasonal == "S") |>
  left_join(`ce.data.0.AllCESSeries`, by = "series_id") |>
  left_join(ce.industry, by = "industry_code") |>
  month_to_date() |>
  mutate(wage_inflation = (value/lag(value, 12) - 1)) |>
  filter(date >= as.Date("2014-01-01")) |>
  ggplot() + ylab("Nominal Wage Inflation") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = wage_inflation, color = industry_name)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.4, 0.9)) +
  scale_y_continuous(breaks = seq(-0.2, 0.4, 0.01),
                     labels = percent_format(acc = 1)) + 
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2022, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0, linetype = "dashed")

Hotels, Restaurants

2008-

Code
ce.series |>
  filter(industry_code %in% c(70721110, 70722511, 70722513),
         data_type_code == "03",
         seasonal == "S") |>
  left_join(`ce.data.0.AllCESSeries`, by = "series_id") |>
  left_join(ce.industry, by = "industry_code") |>
  month_to_date() |>
  mutate(wage_inflation = (value/lag(value, 12) - 1)) |>
  filter(date >= as.Date("2008-01-01")) |>
  ggplot() + ylab("Nominal Wage Inflation") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = wage_inflation, color = industry_name)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.4, 0.9)) +
  scale_y_continuous(breaks = seq(-0.2, 0.4, 0.01),
                     labels = percent_format(acc = 1)) + 
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2022, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0, linetype = "dashed")

2014-

Code
ce.series |>
  filter(industry_code %in% c(70721110, 70722511, 70722513),
         data_type_code == "03",
         seasonal == "S") |>
  left_join(`ce.data.0.AllCESSeries`, by = "series_id") |>
  left_join(ce.industry, by = "industry_code") |>
  month_to_date() |>
  mutate(wage_inflation = (value/lag(value, 12) - 1)) |>
  filter(date >= as.Date("2014-01-01")) |>
  ggplot() + ylab("Average hourly earnings of all employees Inflation") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = wage_inflation, color = industry_name)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.4, 0.9)) +
  scale_y_continuous(breaks = seq(-0.2, 0.4, 0.01),
                     labels = percent_format(acc = 1)) + 
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2022, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0, linetype = "dashed")

Last year

Code
ce.series |>
  filter(industry_code %in% c(70721110, 70722511, 70722513),
         data_type_code == "03",
         seasonal == "S") |>
  left_join(`ce.data.0.AllCESSeries`, by = "series_id") |>
  left_join(ce.industry, by = "industry_code") |>
  month_to_date() |>
  mutate(wage_inflation = (value/lag(value, 12) - 1)) |>
  filter(date >= as.Date("2020-10-01")) |>
  select(date, industry_name, value) |>
  spread(industry_name, value) |>
  arrange(desc(date)) |>
  print_table_conditional()

70721110