Labour cost levels by NACE Rev. 2 activity

Data - Eurostat

Info

Data on wages

Code
wages %>%
  arrange(-(dataset == "lc_lci_lev")) %>%
  mutate(Title = read_lines(paste0("~/Library/Mobile\ Documents/com~apple~CloudDocs/website/data/", source, "/",dataset, ".qmd"), skip = 1, n_max = 1) %>% gsub("title: ", "", .) %>% gsub("\"", "", .)) %>%
  mutate(Download = as.Date(file.info(paste0("~/Library/Mobile\ Documents/com~apple~CloudDocs/website/data/", source, "/", dataset, ".RData"))$mtime),
         Compile = as.Date(file.info(paste0("~/Library/Mobile\ Documents/com~apple~CloudDocs/website/data/", source, "/", dataset, ".html"))$mtime)) %>%
  mutate(Compile = paste0("[", Compile, "](https://fgeerolf.com/data/", source, "/", dataset, '.html)')) %>%
  print_table_conditional()
source dataset Title Download Compile
eurostat lc_lci_lev Labour cost levels by NACE Rev. 2 activity 2024-10-08 [2024-11-01]
eurostat earn_mw_cur Monthly minimum wages - bi-annual data 2024-10-08 [2024-11-05]
eurostat ei_lmlc_q Labour cost index, nominal value - quarterly data 2024-10-08 [2024-11-05]
eurostat lc_lci_r2_q Labour cost index by NACE Rev. 2 activity - nominal value, quarterly data 2024-11-04 [2024-11-04]
eurostat nama_10_lp_ulc Labour productivity and unit labour costs 2024-10-08 [2024-11-01]
eurostat namq_10_lp_ulc Labour productivity and unit labour costs 2024-11-04 [2024-11-04]
eurostat tps00155 Minimum wages 2024-10-08 [2024-10-09]
fred wage Wage 2024-11-01 [2024-11-01]
ilo EAR_4MTH_SEX_ECO_CUR_NB_A Mean nominal monthly earnings of employees by sex and economic activity -- Harmonized series 2023-06-01 [2024-06-20]
ilo EAR_XEES_SEX_ECO_NB_Q Mean nominal monthly earnings of employees by sex and economic activity -- Harmonized series 2023-06-01 [2024-06-20]
oecd AV_AN_WAGE Average annual wages 2024-10-24 [2024-04-16]
oecd AWCOMP Taxing Wages - Comparative tables 2023-09-09 [2024-09-15]
oecd EAR_MEI Hourly Earnings (MEI) 2024-04-16 [2024-04-16]
oecd HH_DASH Household Dashboard 2023-09-09 [2024-09-15]
oecd MIN2AVE Minimum relative to average wages of full-time workers - MIN2AVE 2023-09-09 [2024-09-15]
oecd RMW Real Minimum Wages - RMW 2024-03-12 [2024-09-15]
oecd ULC_EEQ Unit labour costs and labour productivity (employment based), Total economy 2024-04-15 [2024-09-15]

LAST_COMPILE

LAST_COMPILE
2024-11-05

Last

Code
lc_lci_lev %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(1) %>%
  print_table_conditional()
time Nobs
2023 8991

lcstruct

Code
lc_lci_lev %>%
  left_join(lcstruct, by = "lcstruct") %>%
  group_by(lcstruct, Lcstruct) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
lcstruct Lcstruct Nobs
D1_D4_MD5 Labour cost for LCI (compensation of employees plus taxes minus subsidies) 16962
D11 Wages and salaries (total) 16738
D12_D4_MD5 Labour costs other than wages and salaries 16738
D2-D4_MD5_RAT Share of non-wage costs (%) 11006

nace_r2

Code
lc_lci_lev %>%
  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
F Construction 3268
G Wholesale and retail trade; repair of motor vehicles and motorcycles 3268
C Manufacturing 3260
K Financial and insurance activities 3244
B Mining and quarrying 3192
Q Human health and social work activities 3066
I Accommodation and food service activities 3065
P Education 2998
H Transportation and storage 2808
N Administrative and support service activities 2804
B-E Industry (except construction) 2796
M Professional, scientific and technical activities 2788
E Water supply; sewerage, waste management and remediation activities 2780
B-S_X_O Industry, construction and services (except public administration, defense, compulsory social security) 2764
G-N Services of the business economy 2764
P-S Education; human health and social work activities; arts, entertainment and recreation; other service activities 2764
D Electricity, gas, steam and air conditioning supply 2762
S Other service activities 2762
B-N Business economy 2756
R Arts, entertainment and recreation 2748
J Information and communication 2347
B-F Industry and construction 80
G-J Wholesale and retail trade; transport; accommodation and food service activities; information and communication 80
K-N Financial and insurance activities; real estate activities; professional, scientific and technical activities; administrative and support service activities 80
L Real estate activities 72
B-S Industry, construction and services (except activities of households as employers and extra-territorial organisations and bodies) 64
O-S Public administration and defence; compulsory social security; education; human health and social work activities; arts, entertainment and recreation; other service activities 64

unit

Code
lc_lci_lev %>%
  left_join(unit, by = "unit") %>%
  group_by(unit, Unit) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
unit Unit Nobs
EUR Euro 22778
NAC National currency 21388
RT_PRE_EUR Growth rate on previous period (t/t-1) for values in euro 8796
RT_PRE_NAC Growth rate on previous period (t/t-1) for values in national currency 8482

geo

Code
lc_lci_lev %>%
  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
lc_lci_lev %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional()
time Nobs
2000 1336
2004 1836
2008 5478
2009 4
2010 4
2011 4
2012 7008
2013 4
2014 4
2015 4
2016 7544
2020 9857
2021 9685
2022 9685
2023 8991

Individual countries

France

2020

Code
lc_lci_lev %>%
  filter(time == "2020",
         unit == "EUR",
         geo %in% c("FR"),
         lcstruct != "D2-D4_MD5_RAT") %>%
  left_join(lcstruct, by = "lcstruct") %>%
  select(Lcstruct, nace_r2, values) %>%
  left_join(nace_r2, by = "nace_r2") %>%
  spread(Lcstruct, values) %>%
  arrange(-`Labour cost for LCI (compensation of employees plus taxes minus subsidies)`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

2019

Code
lc_lci_lev %>%
  filter(time == "2019",
         unit == "EUR",
         geo %in% c("FR"),
         lcstruct != "D2-D4_MD5_RAT") %>%
  left_join(lcstruct, by = "lcstruct") %>%
  select(Lcstruct, nace_r2, values) %>%
  left_join(nace_r2, by = "nace_r2") %>%
  spread(Lcstruct, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Germany

2020

Code
lc_lci_lev %>%
  filter(time == "2020",
         unit == "EUR",
         geo %in% c("DE"),
         lcstruct != "D2-D4_MD5_RAT") %>%
  left_join(lcstruct, by = "lcstruct") %>%
  select(Lcstruct, nace_r2, values) %>%
  left_join(nace_r2, by = "nace_r2") %>%
  spread(Lcstruct, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

2019

Code
lc_lci_lev %>%
  filter(time == "2019",
         unit == "EUR",
         geo %in% c("DE"),
         lcstruct != "D2-D4_MD5_RAT") %>%
  left_join(lcstruct, by = "lcstruct") %>%
  select(Lcstruct, nace_r2, values) %>%
  left_join(nace_r2, by = "nace_r2") %>%
  spread(Lcstruct, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

France VS Germany

B-E - Industry (except construction)

France, Germany

All

Code
load_data("eurostat/nace_r2_fr.RData")
lc_lci_lev %>%
  filter(geo %in% c("FR", "DE"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D1_D4_MD5",
         # TOTAL: Total
         nace_r2 %in% c("B-E", "B-N", "C"),
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(nace_r2, by = "nace_r2") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = color, linetype = Nace_r2)) +
  xlab("") + ylab("Coût horaire du travail") + add_4flags + scale_color_identity() +
  scale_linetype_manual(values = c("dashed", "solid", "dotted")) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

2009-

Code
load_data("eurostat/nace_r2_fr.RData")
lc_lci_lev %>%
  filter(geo %in% c("FR", "DE"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D1_D4_MD5",
         # TOTAL: Total
         nace_r2 %in% c("C", "B-N"),
         unit == "EUR") %>%
  year_to_date %>%
  filter(date >= as.Date("2008-01-01")) %>%
  left_join(geo, by = "geo") %>%
  left_join(nace_r2, by = "nace_r2") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = color, linetype = Nace_r2)) +
  xlab("") + ylab("Coût horaire du travail") + add_4flags + scale_color_identity() +
  scale_linetype_manual(values = c("dashed", "solid")) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

D1_D4_MD5 - Labour cost for LCI (compensation of employees plus taxes minus subsidies)

France, Germany, Italy, Spain

Code
lc_lci_lev %>%
  filter(lcstruct == "D1_D4_MD5",
         time == "2019",
         unit == "EUR",
         geo %in% c("FR", "DE", "IT", "ES")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Geo = gsub(" ", "-", str_to_lower(Geo)),
         Geo = paste0('<img src="../../bib/flags/vsmall/', Geo, '.png" alt="Flag">')) %>%
  select(nace_r2, Geo, values) %>%
  left_join(nace_r2, by = "nace_r2") %>%
  spread(Geo, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

B - Mining

Code
lc_lci_lev %>%
  filter(geo %in% c("FR", "DE", "IT"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D1_D4_MD5",
         # TOTAL: Total
         nace_r2 == "B",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = color)) +
  xlab("") + ylab("Hourly wages + taxes - subsidies (Industry)") + add_3flags + scale_color_identity() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

B-E - Industry (except construction)

France, Italy, Spain

Code
lc_lci_lev %>%
  filter(geo %in% c("FR", "ES", "IT"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D1_D4_MD5",
         # TOTAL: Total
         nace_r2 == "B-E",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = color)) +
  xlab("") + ylab("Hourly wages + taxes - subsidies (Industry)") + add_3flags + scale_color_identity() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

France, Germany, Italy

Code
lc_lci_lev %>%
  filter(geo %in% c("FR", "DE", "IT"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D1_D4_MD5",
         # TOTAL: Total
         nace_r2 == "B-E",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = color)) +
  xlab("") + ylab("Hourly wages + taxes - subsidies (Industry)") + add_3flags + scale_color_identity() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

Greece, Portugal, Spain

Code
lc_lci_lev %>%
  filter(geo %in% c("EL", "PT", "ES"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D1_D4_MD5",
         # TOTAL: Total
         nace_r2 == "B-E",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = color)) +
  xlab("") + ylab("Hourly wages + taxes - subsidies (Industry)") + add_3flags + scale_color_identity() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

C - Manufacturing

Code
lc_lci_lev %>%
  filter(geo %in% c("FR", "DE", "IT"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D1_D4_MD5",
         # TOTAL: Total
         nace_r2 == "C",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = color)) +
  xlab("") + ylab("Hourly wages + taxes - subsidies (Manufacturing)") + add_3flags + scale_color_identity() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

D11 - Wages and salaries (total)

France, Germany, Italy, Spain

Code
lc_lci_lev %>%
  filter(lcstruct == "D11",
         time == "2019",
         unit == "EUR",
         geo %in% c("FR", "DE", "IT", "ES")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Geo = gsub(" ", "-", str_to_lower(Geo)),
         Geo = paste0('<img src="../../bib/flags/vsmall/', Geo, '.png" alt="Flag">')) %>%
  select(nace_r2, Geo, values) %>%
  left_join(nace_r2, by = "nace_r2") %>%
  spread(Geo, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Greece, Portugal, Spain

Code
lc_lci_lev %>%
  filter(lcstruct == "D11",
         time == "2019",
         unit == "EUR",
         geo %in% c("EL", "ES", "PT")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = gsub(" ", "-", str_to_lower(Geo)),
         Geo = paste0('<img src="../../bib/flags/vsmall/', Geo, '.png" alt="Flag">')) %>%
  select(nace_r2, Geo, values) %>%
  left_join(nace_r2, by = "nace_r2") %>%
  spread(Geo, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

B-N - Business economy

France, Germany, Italy

Code
lc_lci_lev %>%
  filter(geo %in% c("FR", "DE", "IT"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D11",
         # TOTAL: Total
         nace_r2 == "B-N",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = color)) +
  xlab("") + ylab("Hourly Wage") + add_3flags + scale_color_identity() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

Greece, Portugal, Spain

Code
lc_lci_lev %>%
  filter(geo %in% c("EL", "ES", "PT"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D11",
         # TOTAL: Total
         nace_r2 == "B-N",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = color)) +
  xlab("") + ylab("Hourly Wage") + add_3flags + scale_color_identity() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

B - Mining

Code
lc_lci_lev %>%
  filter(geo %in% c("FR", "DE", "IT"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D11",
         # TOTAL: Total
         nace_r2 == "B",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = color)) +
  xlab("") + ylab("Hourly Wage") + add_3flags + scale_color_identity() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

B-E - Industry (except construction)

English

Code
lc_lci_lev %>%
  filter(geo %in% c("FR", "DE", "IT"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D11",
         # TOTAL: Total
         nace_r2 == "B-E",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = color)) +
  xlab("") + ylab("Hourly Wage") + add_3flags + scale_color_identity() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

French

Code
lc_lci_lev %>%
  filter(geo %in% c("FR", "DE", "IT"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D11",
         # TOTAL: Total
         nace_r2 == "B-E",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = color)) +
  xlab("") + ylab("Hourly Wage") + add_3flags + scale_color_identity() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

C - Manufacturing

English

Code
lc_lci_lev %>%
  filter(geo %in% c("FR", "DE", "IT"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D11",
         # TOTAL: Total
         nace_r2 == "C",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = color)) +
  xlab("") + ylab("Hourly Wage") + add_3flags + scale_color_identity() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

French

Code
lc_lci_lev %>%
  filter(geo %in% c("FR", "DE", "IT"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D11",
         # TOTAL: Total
         nace_r2 == "C",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = color)) +
  xlab("") + ylab("Salaire Horaire") + add_3flags + scale_color_identity() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

D12_D4_MD5 - Labour Costs Other than Wages and Salaries

France, Germany, Italy, Spain

Code
lc_lci_lev %>%
  filter(lcstruct == "D12_D4_MD5",
         time == "2019",
         unit == "EUR",
         geo %in% c("FR", "DE", "IT", "ES")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Geo = gsub(" ", "-", str_to_lower(Geo)),
         Geo = paste0('<img src="../../bib/flags/vsmall/', Geo, '.png" alt="Flag">')) %>%
  select(nace_r2, Geo, values) %>%
  left_join(nace_r2, by = "nace_r2") %>%
  spread(Geo, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

B - Mining

Code
lc_lci_lev %>%
  filter(geo %in% c("FR", "DE", "IT"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D12_D4_MD5",
         # TOTAL: Total
         nace_r2 == "B",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = Geo)) +
  xlab("") + ylab("Labour Costs Other than Wages and Salaries") +
  scale_color_manual(values = c("#002395", "#000000", "#009246")) +
  add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

B-E - Industry (except construction)

Code
lc_lci_lev %>%
  filter(geo %in% c("FR", "DE", "IT"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D12_D4_MD5",
         # TOTAL: Total
         nace_r2 == "B-E",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = Geo)) +
  xlab("") + ylab("Labour Costs Other than Wages and Salaries") +
  scale_color_manual(values = c("#002395", "#000000", "#009246")) +
  add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))

C - Manufacturing

Code
lc_lci_lev %>%
  filter(geo %in% c("FR", "DE", "IT"),
         # SCPOLDPEN: Old age pension
         lcstruct == "D12_D4_MD5",
         # TOTAL: Total
         nace_r2 == "C",
         unit == "EUR") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  ggplot + theme_minimal() + geom_line(aes(x = date, y = values, color = Geo)) +
  xlab("") + ylab("Labour Costs Other than Wages and Salaries") +
  scale_color_manual(values = c("#002395", "#000000", "#009246")) +
  add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(0, 60, 1),
                     labels = scales::dollar_format(su = "€", p = ""))