Current Employment Statistics - CE

Data - BLS

Last observation: 2022 (N = 173444)

First observation: 1939 (N = 1292)

Last data update: 02 août 2026, 08:50

Last compile: 05 sept. 2026, 01:26

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 3901660
U Not Seasonally Adjusted 4210344

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 == 3,
         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 == 3,
         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 == 3,
         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 == 3,
         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 == 3,
         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 == 3,
         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 == 3,
         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()
date Full-service restaurants Hotels and motels, except casino hotels Limited-service restaurants
2022-07-01 20.16 22.41 16.20
2022-06-01 20.01 22.34 16.10
2022-05-01 19.87 22.16 16.07
2022-04-01 19.75 21.99 16.02
2022-03-01 19.62 21.91 15.97
2022-02-01 19.52 21.67 15.87
2022-01-01 19.37 21.71 15.84
2021-12-01 19.54 21.72 15.80
2021-11-01 19.35 21.58 15.73
2021-10-01 19.23 22.38 15.52
2021-09-01 19.04 20.47 15.46
2021-08-01 18.84 20.77 15.33
2021-07-01 18.71 20.27 15.12
2021-06-01 18.46 20.07 14.96
2021-05-01 18.11 19.62 14.75
2021-04-01 17.88 19.25 14.57
2021-03-01 17.62 18.86 14.28
2021-02-01 17.31 18.64 14.27
2021-01-01 17.12 18.52 14.12
2020-12-01 16.88 18.43 14.10
2020-11-01 16.95 17.98 13.90
2020-10-01 17.05 18.23 13.82

70721110