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

LAST_COMPILE

LAST_COMPILE
2026-03-31

Last

Code
ei_lmlc_q %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(3) %>%
  print_table_conditional()
time Nobs
2025Q4 22509
2025Q3 22509
2025Q2 23211

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 770095
LM-LCI-SAL Labour cost index - Wages and salaries 770095
LM-LCI-TOT Labour cost index - Total labour cost 764939

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 90923
B Mining and quarrying 90879
C Manufacturing 90875
H Transportation and storage 90871
E Water supply; sewerage, waste management and remediation activities 90855
J Information and communication 90855
D Electricity, gas, steam and air conditioning supply 90843
N Administrative and support service activities 90843
M Professional, scientific and technical activities 90835
I Accommodation and food service activities 90819
F Construction 90807
G Wholesale and retail trade; repair of motor vehicles and motorcycles 90791
L Real estate activities 90583
B-N Business economy 90411
B-E Industry (except construction) 90159
G-N Services of the business economy 90159
B-F Industry and construction 90051
G-J Wholesale and retail trade; transport; accommodation and food service activities; information and communication 89871
K-N Financial and insurance activities; real estate activities; professional, scientific and technical activities; administrative and support service activities 89655
R Arts, entertainment and recreation 84448
S Other service activities 84428
P Education 83496
Q Human health and social work activities 83444
B-S Industry, construction and services (except activities of households as employers and extra-territorial organisations and bodies) 83256
O Public administration and defence; compulsory social security 82796
O-S Public administration and defence; compulsory social security; education; human health and social work activities; arts, entertainment and recreation; other service activities 82176

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

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

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