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 .html .RData
eurostat earn_mw_cur 2025-08-27 2025-08-24
eurostat ei_lmlc_q 2025-08-27 2025-08-24
eurostat lc_lci_lev 2025-08-27 2025-08-24
eurostat lc_lci_r2_q 2025-08-27 2025-08-24
eurostat nama_10_lp_ulc 2025-08-27 2025-08-24
eurostat namq_10_lp_ulc 2025-08-27 2025-08-24
eurostat tps00155 2025-08-27 2025-08-24
fred wage 2025-08-25 2025-08-24
ilo EAR_4MTH_SEX_ECO_CUR_NB_A 2024-06-20 2023-06-01
ilo EAR_XEES_SEX_ECO_NB_Q 2024-06-20 2023-06-01
oecd AV_AN_WAGE 2025-08-25 2025-08-24
oecd AWCOMP 2025-08-25 2023-09-09
oecd EAR_MEI 2024-04-16 2024-04-16
oecd HH_DASH 2025-08-25 2023-09-09
oecd MIN2AVE 2025-08-25 2023-09-09
oecd RMW 2025-08-25 2024-03-12
oecd ULC_EEQ 2025-08-25 2024-04-15

LAST_COMPILE

LAST_COMPILE
2025-08-26

Last

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

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 86545
B Mining and quarrying 86517
C Manufacturing 86513
H Transportation and storage 86509
E Water supply; sewerage, waste management and remediation activities 86493
J Information and communication 86493
D Electricity, gas, steam and air conditioning supply 86481
N Administrative and support service activities 86481
M Professional, scientific and technical activities 86473
I Accommodation and food service activities 86457
F Construction 86445
G Wholesale and retail trade; repair of motor vehicles and motorcycles 86429
L Real estate activities 86217
B-N Business economy 86049
B-E Industry (except construction) 85797
G-N Services of the business economy 85797
B-F Industry and construction 85689
G-J Wholesale and retail trade; transport; accommodation and food service activities; information and communication 85509
K-N Financial and insurance activities; real estate activities; professional, scientific and technical activities; administrative and support service activities 85293
R Arts, entertainment and recreation 80743
S Other service activities 80719
P Education 79791
Q Human health and social work activities 79739
B-S Industry, construction and services (except activities of households as employers and extra-territorial organisations and bodies) 79551
O Public administration and defence; compulsory social security 79091
O-S Public administration and defence; compulsory social security; education; human health and social work activities; arts, entertainment and recreation; other service activities 78471

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

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

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