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-10-10 2025-10-10
eurostat earn_mw_cur Monthly minimum wages - bi-annual data 2025-10-10 2025-10-10
eurostat lc_lci_lev Labour cost levels by NACE Rev. 2 activity 2025-10-10 2025-10-10
eurostat lc_lci_r2_q Labour cost index by NACE Rev. 2 activity - nominal value, quarterly data 2025-10-10 2025-09-26
eurostat nama_10_lp_ulc Labour productivity and unit labour costs 2025-10-10 2025-10-10
eurostat namq_10_lp_ulc Labour productivity and unit labour costs 2025-10-10 2025-09-26
eurostat tps00155 Minimum wages 2025-10-10 2025-10-10
fred wage Wage 2025-10-09 2025-10-09
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-09-29 2025-09-28
oecd AWCOMP Taxing Wages - Comparative tables 2025-09-29 2023-09-09
oecd EAR_MEI Hourly Earnings (MEI) 2024-04-16 2024-04-16
oecd HH_DASH Household Dashboard 2025-09-29 2023-09-09
oecd MIN2AVE Minimum relative to average wages of full-time workers - MIN2AVE 2025-09-29 2023-09-09
oecd RMW Real Minimum Wages - RMW 2025-09-29 2024-03-12
oecd ULC_EEQ Unit labour costs and labour productivity (employment based), Total economy 2025-09-29 2024-04-15

LAST_COMPILE

LAST_COMPILE
2025-10-11

Last

Code
ei_lmlc_q %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(3) %>%
  print_table_conditional()
time Nobs
2025Q2 21807
2025Q1 21807
2024Q4 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 740781
LM-LCI-SAL Labour cost index - Wages and salaries 740781
LM-LCI-TOT Labour cost index - Total labour cost 735921

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 87371
B Mining and quarrying 87339
C Manufacturing 87335
H Transportation and storage 87331
E Water supply; sewerage, waste management and remediation activities 87315
J Information and communication 87315
D Electricity, gas, steam and air conditioning supply 87303
N Administrative and support service activities 87303
M Professional, scientific and technical activities 87295
I Accommodation and food service activities 87279
F Construction 87267
G Wholesale and retail trade; repair of motor vehicles and motorcycles 87251
L Real estate activities 87043
B-N Business economy 86871
B-E Industry (except construction) 86619
G-N Services of the business economy 86619
B-F Industry and construction 86511
G-J Wholesale and retail trade; transport; accommodation and food service activities; information and communication 86331
K-N Financial and insurance activities; real estate activities; professional, scientific and technical activities; administrative and support service activities 86115
R Arts, entertainment and recreation 81538
S Other service activities 81514
P Education 80586
Q Human health and social work activities 80534
B-S Industry, construction and services (except activities of households as employers and extra-territorial organisations and bodies) 80346
O Public administration and defence; compulsory social security 79886
O-S Public administration and defence; compulsory social security; education; human health and social work activities; arts, entertainment and recreation; other service activities 79266

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 786879
SCA Seasonally and calendar adjusted data 786279
NSA Unadjusted data (i.e. neither seasonally adjusted nor calendar adjusted data) 644325

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 751365
I20 Index, 2020=100 738198
PCH_SM Percentage change compared to same period in previous year 727920

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))