Structure of earnings survey - monthly earnings - earn_ses_monthly
Data - Eurostat
Info
Last observation: Annual: 2022 (N = 215,754)
First observation: Annual: 2002 (N = 1,900,421)
Last data update: 24 jul 2026, 00:19. Last compile: 24 jul 2026, 01:15
Structure
France, Germany, Italy, Spain
Mean Monthly Earnings
Code
earn_ses_monthly %>%
filter(geo %in% c("FR", "DE", "IT", "ES"),
nace_r2 == "B-N",
isco08 == "TOTAL",
worktime == "TOTAL",
age == "TOTAL",
sex == "T",
indic_se == "MEAN_E_EUR") %>%
year_to_date %>%
left_join(colors, by = c("Geo" = "country")) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
geom_point(aes(x = date, y = values, color = color)) +
theme_minimal() + scale_color_identity() + add_4flags +
scale_x_date(breaks = as.Date(paste0(seq(2000, 2100, 4), "-01-01")),
labels = date_format("%Y")) +
xlab("") + ylab("Mean monthly earnings (€)")
France
Gender Pay Gap
Code
earn_ses_monthly %>%
filter(geo == "FR",
nace_r2 == "B-N",
isco08 == "TOTAL",
worktime == "TOTAL",
age == "TOTAL",
sex %in% c("M", "F"),
indic_se == "MEAN_E_EUR") %>%
year_to_date %>%
ggplot + geom_line(aes(x = date, y = values, color = Sex)) +
geom_point(aes(x = date, y = values, color = Sex)) +
theme_minimal() +
scale_x_date(breaks = as.Date(paste0(seq(2000, 2100, 4), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.15, 0.85),
legend.title = element_blank()) +
xlab("") + ylab("Mean monthly earnings (€)")
Table
png
Code
include_graphics3b("bib/eurostat/earn_ses_monthly_ex1.png")
Javascript
Code
earn_ses_monthly %>%
filter(nace_r2 == "B-N",
isco08 == "TOTAL",
worktime == "TOTAL",
age == "TOTAL",
sex == "T",
indic_se == "MEAN_E_EUR",
time %in% c("2002", "2010", "2018")) %>%
select(geo, Geo, time, values) %>%
na.omit %>%
mutate(Geo = ifelse(geo == "DE", "Germany", Geo),
values = round(values)) %>%
spread(time, values) %>%
mutate_at(vars(-1, -2), funs(ifelse(is.na(.), "", paste0(., " €")))) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}Maps
2018
Code
earn_ses_monthly %>%
filter(nace_r2 == "B-N",
isco08 == "TOTAL",
worktime == "TOTAL",
age == "TOTAL",
sex == "T",
indic_se == "MEAN_E_EUR",
time %in% c("2018")) %>%
select(geo, Geo, values) %>%
right_join(europe_NUTS0, by = "geo") %>%
filter(long >= -15, lat >= 33) %>%
ggplot(., aes(x = long, y = lat, group = group, fill = values)) +
geom_polygon() + coord_map() +
scale_fill_viridis_c(na.value = "white",
labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = "€"),
breaks = seq(0, 20000, 1000),
values = c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 1)) +
theme_void() + theme(legend.position = c(0.25, 0.85)) +
labs(fill = "Avg Wage")
2014
Code
earn_ses_monthly %>%
filter(nace_r2 == "B-N",
isco08 == "TOTAL",
worktime == "TOTAL",
age == "TOTAL",
sex == "T",
indic_se == "MEAN_E_EUR",
time %in% c("2014")) %>%
select(geo, Geo, values) %>%
right_join(europe_NUTS0, by = "geo") %>%
filter(long >= -15, lat >= 33) %>%
ggplot(., aes(x = long, y = lat, group = group, fill = values)) +
geom_polygon() + coord_map() +
scale_fill_viridis_c(na.value = "white",
labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = "€"),
breaks = seq(0, 20000, 1000),
values = c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 1)) +
theme_void() + theme(legend.position = c(0.25, 0.85)) +
labs(fill = "Avg Wage")