Hourly Earnings

Data - OECD

Info

source dataset .html .RData
oecd HOU_EAR 2024-05-13 2024-05-16
oecd PRICES_CPI 2024-04-16 2024-04-15

Data on wages

Code
load_data("wages.RData")
wages %>%
  source_dataset_title_file_updates()
source dataset .html .RData
eurostat earn_mw_cur 2024-05-09 2024-05-09
eurostat ei_lmlc_q 2024-05-09 2024-05-09
eurostat lc_lci_lev 2024-05-09 2024-05-09
eurostat lc_lci_r2_q 2024-05-10 2024-05-09
eurostat nama_10_lp_ulc 2024-05-09 2024-05-09
eurostat namq_10_lp_ulc 2024-05-09 2024-05-09
eurostat tps00155 2024-05-09 2024-05-09
fred wage 2024-05-10 2024-05-10
ilo EAR_4MTH_SEX_ECO_CUR_NB_A 2023-06-01 2023-06-01
ilo EAR_XEES_SEX_ECO_NB_Q 2023-06-01 2023-06-01
oecd AV_AN_WAGE 2024-04-16 2023-09-09
oecd AWCOMP 2024-04-16 2023-09-09
oecd EAR_MEI 2024-04-16 2024-04-16
oecd HH_DASH 2024-04-16 2023-09-09
oecd MIN2AVE 2024-04-16 2023-09-09
oecd RMW 2024-04-16 2024-03-12
oecd ULC_EEQ 2024-04-16 2024-04-15

Last

obsTime FREQ Nobs
2023 A 84
2022 A 93
2021 A 95
2024-04 M 3
2024-03 M 3
2024-02 M 9
2024-Q1 Q 3
2023-Q4 Q 83
2023-Q3 Q 87

Detail

The Hourly Earnings dataset contains predominantly monthly statistics, and associated statistical methodological information, for the OECD member countries and for selected non-member economies.

The Hourly Earnings dataset provides monthly and quarterly data on employees’ earnings series. It includes earnings series in manufacturing and for the private economic sector. Mostly the sources of the data are business surveys covering different economic sectors, but in some cases administrative data are also used.

The target series for hourly earnings correspond to seasonally adjusted average total earnings paid per employed person per hour, including overtime pay and regularly recurring cash supplements. Where hourly earnings series are not available, a series could refer to weekly or monthly earnings. In this case, a series for full-time or full-time equivalent employees is preferred to an all employees series.

SECTOR

Code
HOU_EAR %>%
  left_join(SECTOR, by = "SECTOR") %>%
  group_by(SECTOR, Sector) %>%
  summarise(nobs = n()) %>%
  arrange(-nobs) %>%
  print_table_conditional()
SECTOR Sector nobs
S1 Total economy 35273
S1D Private sector 6637

ADJUSTMENT

Code
HOU_EAR %>%
  left_join(ADJUSTMENT, by = "ADJUSTMENT") %>%
  group_by(ADJUSTMENT, Adjustment) %>%
  summarise(nobs = n()) %>%
  arrange(-nobs) %>%
  print_table_conditional()
ADJUSTMENT Adjustment nobs
Y Calendar and seasonally adjusted 25816
N Neither seasonally adjusted nor calendar adjusted 16094

FREQ

Code
HOU_EAR %>%
  left_join(FREQ, by = "FREQ") %>%
  group_by(FREQ, Freq) %>%
  summarise(nobs = n()) %>%
  arrange(-nobs) %>%
  print_table_conditional()
FREQ Freq nobs
M Monthly 22385
Q Quarterly 15659
A Annual 3866

REF_AREA

Code
HOU_EAR %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  group_by(REF_AREA, Ref_area) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Ref_area))),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

obsTime

Code
HOU_EAR %>%
  group_by(obsTime) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(obsTime)) %>%
  print_table_conditional()

Eurozone, United States

All

Code
HOU_EAR %>%
  filter(SECTOR == "S1",
         FREQ == "Q",
         REF_AREA %in% c("USA", "EA19"),
         ADJUSTMENT == "Y") %>%
  quarter_to_date %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  mutate(Ref_area = ifelse(REF_AREA == "EA19", "Europe", Ref_area)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(color = ifelse(REF_AREA == "EA19", color2, color)) %>%
  rename(Location = Ref_area) %>%
  ggplot(.) + geom_line(aes(x = date, y = obsValue, color = color)) + 
  scale_color_identity() + theme_minimal() + add_2flags +
  scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 500, 10),
                     labels = scales::dollar_format(accuracy = 1, suffix = "", prefix = "")) +
  ylab("") + xlab("")

1996-

Quarterly

Code
HOU_EAR %>%
  filter(SECTOR == "S1",
         FREQ == "Q",
         REF_AREA %in% c("USA", "EA19"),
         ADJUSTMENT == "Y") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1996-01-01")) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  group_by(REF_AREA) %>%
  arrange(date) %>%
  mutate(obsValue = 100*obsValue/obsValue[1]) %>%
  mutate(Ref_area = ifelse(REF_AREA == "EA19", "Europe", Ref_area)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(color = ifelse(REF_AREA == "EA19", color2, color)) %>%
  rename(Location = Ref_area) %>%
  ggplot(.) + geom_line(aes(x = date, y = obsValue, color = color)) + 
  scale_color_identity() + theme_minimal() + add_2flags +
  scale_x_date(breaks = seq(1996, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 500, 10),
                     labels = scales::dollar_format(accuracy = 1, suffix = "", prefix = "")) +
  ylab("") + xlab("")

Monthly

Code
HOU_EAR %>%
  filter(SECTOR == "S1",
         FREQ == "M",
         REF_AREA %in% c("USA", "EA19"),
         ADJUSTMENT == "Y") %>%
  month_to_date %>%
  filter(date >= as.Date("1996-01-01")) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  group_by(REF_AREA) %>%
  arrange(date) %>%
  mutate(obsValue = 100*obsValue/obsValue[1]) %>%
  mutate(Ref_area = ifelse(REF_AREA == "EA19", "Europe", Ref_area)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(color = ifelse(REF_AREA == "EA19", color2, color)) %>%
  rename(Location = Ref_area) %>%
  ggplot(.) + geom_line(aes(x = date, y = obsValue, color = color)) + 
  scale_color_identity() + theme_minimal() + add_2flags +
  scale_x_date(breaks = seq(1996, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 500, 10),
                     labels = scales::dollar_format(accuracy = 1, suffix = "", prefix = "")) +
  ylab("") + xlab("")

Eurozone, Japan, United States, United Kingdom

All

Code
HOU_EAR %>%
  filter(SECTOR == "S1",
         FREQ == "Q",
         REF_AREA %in% c("USA", "JPN", "EA19", "GBR", "HUN", "POL"),
         ADJUSTMENT == "Y") %>%
  quarter_to_date %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  mutate(Ref_area = ifelse(REF_AREA == "EA19", "Europe", Ref_area)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(color = ifelse(REF_AREA == "EA19", color2, color)) %>%
  rename(Location = Ref_area) %>%
  ggplot(.) + geom_line(aes(x = date, y = obsValue, color = color)) + 
  scale_color_identity() + theme_minimal() + add_6flags +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 500, 10),
                     labels = scales::dollar_format(accuracy = 1, suffix = " k", prefix = "")) +
  ylab("") + xlab("")

2015-

Code
HOU_EAR %>%
  filter(SECTOR == "S1",
         FREQ == "Q",
         REF_AREA %in% c("USA", "JPN", "EA19", "GBR", "HUN", "POL"),
         ADJUSTMENT == "Y") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2015-01-01")) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  mutate(Ref_area = ifelse(REF_AREA == "EA19", "Europe", Ref_area)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(color = ifelse(REF_AREA == "EA19", color2, color)) %>%
  rename(Location = Ref_area) %>%
  ggplot(.) + geom_line(aes(x = date, y = obsValue, color = color)) + 
  scale_color_identity() + theme_minimal() + add_6flags +
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 500, 10),
                     labels = scales::dollar_format(accuracy = 1, suffix = "", prefix = "")) +
  ylab("") + xlab("")