Labour cost index, nominal value - quarterly data

Data - Eurostat

Info

Data on wages

Code
load_data("wages.RData")
wages %>%
  arrange(-(dataset == "ei_lmlc_q")) %>%
  source_dataset_file_updates()
source dataset Title .html .rData
eurostat ei_lmlc_q Labour cost index, nominal value - quarterly data 2025-12-25 2025-12-25
eurostat earn_mw_cur Monthly minimum wages - bi-annual data 2025-12-25 2025-12-25
eurostat lc_lci_lev Labour cost levels by NACE Rev. 2 activity 2025-12-25 2025-12-25
eurostat lc_lci_r2_q Labour cost index by NACE Rev. 2 activity - nominal value, quarterly data 2025-12-25 2025-12-24
eurostat nama_10_lp_ulc Labour productivity and unit labour costs 2025-12-25 2025-12-25
eurostat namq_10_lp_ulc Labour productivity and unit labour costs 2025-12-25 2025-12-25
eurostat tps00155 Minimum wages 2025-12-25 2025-12-25
fred wage Wage 2025-12-25 2025-12-25
ilo EAR_4MTH_SEX_ECO_CUR_NB_A Mean nominal monthly earnings of employees by sex and economic activity -- Harmonized series 2024-06-20 2023-06-01
ilo EAR_XEES_SEX_ECO_NB_Q Mean nominal monthly earnings of employees by sex and economic activity -- Harmonized series 2024-06-20 2023-06-01
oecd AV_AN_WAGE Average annual wages 2025-12-26 2025-12-26
oecd AWCOMP Taxing Wages - Comparative tables 2025-12-26 2023-09-09
oecd EAR_MEI Hourly Earnings (MEI) 2024-04-16 2024-04-16
oecd HH_DASH Household Dashboard 2025-12-26 2023-09-09
oecd MIN2AVE Minimum relative to average wages of full-time workers - MIN2AVE 2025-12-26 2023-09-09
oecd RMW Real Minimum Wages - RMW 2025-12-26 2024-03-12
oecd ULC_EEQ Unit labour costs and labour productivity (employment based), Total economy 2025-12-26 2024-04-15

LAST_COMPILE

LAST_COMPILE
2025-12-27

Last

Code
ei_lmlc_q %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(3) %>%
  print_table_conditional()
time Nobs
2025Q3 22041
2025Q2 22743
2025Q1 22743

indic

Code
ei_lmlc_q %>%
  left_join(indic, by = "indic") %>%
  group_by(indic, Indic) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
indic Indic Nobs
LM-LCI-OTH Labour cost index - Labour costs other than wages and salaries 748752
LM-LCI-SAL Labour cost index - Wages and salaries 748752
LM-LCI-TOT Labour cost index - Total labour cost 743908

nace_r2

Code
ei_lmlc_q %>%
  left_join(nace_r2, by = "nace_r2") %>%
  group_by(nace_r2, Nace_r2) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
nace_r2 Nace_r2 Nobs
K Financial and insurance activities 88310
B Mining and quarrying 88266
C Manufacturing 88262
H Transportation and storage 88258
E Water supply; sewerage, waste management and remediation activities 88242
J Information and communication 88242
D Electricity, gas, steam and air conditioning supply 88230
N Administrative and support service activities 88230
M Professional, scientific and technical activities 88222
I Accommodation and food service activities 88206
F Construction 88194
G Wholesale and retail trade; repair of motor vehicles and motorcycles 88178
L Real estate activities 87970
B-N Business economy 87798
B-E Industry (except construction) 87546
G-N Services of the business economy 87546
B-F Industry and construction 87438
G-J Wholesale and retail trade; transport; accommodation and food service activities; information and communication 87258
K-N Financial and insurance activities; real estate activities; professional, scientific and technical activities; administrative and support service activities 87042
R Arts, entertainment and recreation 82438
S Other service activities 82418
P Education 81486
Q Human health and social work activities 81434
B-S Industry, construction and services (except activities of households as employers and extra-territorial organisations and bodies) 81246
O Public administration and defence; compulsory social security 80786
O-S Public administration and defence; compulsory social security; education; human health and social work activities; arts, entertainment and recreation; other service activities 80166

s_adj

Code
ei_lmlc_q %>%
  left_join(s_adj, by = "s_adj") %>%
  group_by(s_adj, S_adj) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
s_adj S_adj Nobs
CA Calendar adjusted data, not seasonally adjusted data 795708
SCA Seasonally and calendar adjusted data 795124
NSA Unadjusted data (i.e. neither seasonally adjusted nor calendar adjusted data) 650580

unit

Code
ei_lmlc_q %>%
  left_join(unit, by = "unit") %>%
  group_by(unit, Unit) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
unit Unit Nobs
PCH_PRE Percentage change on previous period 759340
I20 Index, 2020=100 746177
PCH_SM Percentage change compared to same period in previous year 735895

geo

Code
ei_lmlc_q %>%
  left_join(geo, by = "geo") %>%
  group_by(geo, Geo) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

time

Code
ei_lmlc_q %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  print_table_conditional()

Germany, Italy, France, Spain

LM-LCI-SAL

B-N

All

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-SAL",
         s_adj == "SCA",
         nace_r2 == "B-N",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2024, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5))

2000-

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-SAL",
         s_adj == "SCA",
         nace_r2 == "B-N",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  group_by(geo) %>%
  arrange(date) %>%
  filter(date >= as.Date("2000-01-01")) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2024, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5))

2019-

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-SAL",
         s_adj == "SCA",
         nace_r2 == "B-N",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  filter(date >= as.Date("2019-10-01")) %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = seq.Date(from = as.Date("2019-10-01"), to = Sys.Date(), by = "3 months"),
               labels = date_format("%b %y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1))

October 2021-

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-SAL",
         s_adj == "SCA",
         nace_r2 == "B-N",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  filter(date >= as.Date("2021-10-01")) %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = seq.Date(from = as.Date("2019-10-01"), to = Sys.Date(), by = "3 months"),
               labels = date_format("%b %y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1))

B-S

All

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-SAL",
         s_adj == "SCA",
         nace_r2 == "B-S",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2024, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5))

2000-

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-SAL",
         s_adj == "SCA",
         nace_r2 == "B-S",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  group_by(geo) %>%
  arrange(date) %>%
  filter(date >= as.Date("2000-01-01")) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2024, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5))

2019-

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-SAL",
         s_adj == "SCA",
         nace_r2 == "B-S",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  filter(date >= as.Date("2019-10-01")) %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = seq.Date(from = as.Date("2019-10-01"), to = Sys.Date(), by = "3 months"),
               labels = date_format("%b %y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1))

October 2021-

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-SAL",
         s_adj == "SCA",
         nace_r2 == "B-S",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  filter(date >= as.Date("2021-10-01")) %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = seq.Date(from = as.Date("2019-10-01"), to = Sys.Date(), by = "3 months"),
               labels = date_format("%b %y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1))

LM-LCI-OTH

B-N

All

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-OTH",
         s_adj == "SCA",
         nace_r2 == "B-N",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2024, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5))

2000-

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-OTH",
         s_adj == "SCA",
         nace_r2 == "B-N",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  group_by(geo) %>%
  arrange(date) %>%
  filter(date >= as.Date("2000-01-01")) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2024, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5))

2019-

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-OTH",
         s_adj == "SCA",
         nace_r2 == "B-N",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  filter(date >= as.Date("2019-10-01")) %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = seq.Date(from = as.Date("2019-10-01"), to = Sys.Date(), by = "3 months"),
               labels = date_format("%b %y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1))

October 2021-

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-OTH",
         s_adj == "SCA",
         nace_r2 == "B-N",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  filter(date >= as.Date("2021-10-01")) %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = seq.Date(from = as.Date("2019-10-01"), to = Sys.Date(), by = "3 months"),
               labels = date_format("%b %y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1))

LM-LCI-TOT

B-N

All

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-TOT",
         s_adj == "SCA",
         nace_r2 == "B-N",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2024, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5))

2000-

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-TOT",
         s_adj == "SCA",
         nace_r2 == "B-N",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  group_by(geo) %>%
  arrange(date) %>%
  filter(date >= as.Date("2000-01-01")) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2024, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5))

2010-

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-TOT",
         s_adj == "SCA",
         nace_r2 == "B-N",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  group_by(geo) %>%
  arrange(date) %>%
  filter(date >= as.Date("2010-01-01")) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2024, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5))

2019-

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-TOT",
         s_adj == "SCA",
         nace_r2 == "B-N",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  filter(date >= as.Date("2019-10-01")) %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = seq.Date(from = as.Date("2019-10-01"), to = Sys.Date(), by = "3 months"),
               labels = date_format("%b %y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1))

October 2021-

Code
ei_lmlc_q %>%
  filter(indic == "LM-LCI-TOT",
         s_adj == "SCA",
         nace_r2 == "B-N",
         unit == "I20",
         geo %in% c("DE", "IT", "ES", "FR", "BE")) %>%
  quarter_to_date %>%
  filter(date >= as.Date("2021-10-01")) %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = seq.Date(from = as.Date("2019-10-01"), to = Sys.Date(), by = "3 months"),
               labels = date_format("%b %y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1))