Income of households by NUTS 2 regions - nama_10r_2hhinc
Data - Eurostat
Info
Last observation: Annual: 2024 (N = 3,082)
First observation: Annual: 2000 (N = 10,714)
Last data update: 23 jul 2026, 22:08. Last compile: 24 jul 2026, 02:52
Structure
Disposable Income per Inhabitant
France, Germany, Spain, Italy, Portugal
Code
nama_10r_2hhinc %>%
filter(geo %in% c("FR", "DE", "ES", "IT", "PT"),
direct == "BAL",
na_item == "B6N",
unit == "EUR_HAB") %>%
year_to_date %>%
left_join(colors, by = c("Geo" = "country")) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + scale_color_identity() + add_5flags +
scale_x_date(breaks = as.Date(paste0(seq(2000, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
xlab("") + ylab("Disposable income per inhabitant (€)") +
scale_y_continuous(labels = scales::comma_format())
Table
Code
nama_10r_2hhinc %>%
filter(time == "2015",
nchar(geo) == 4,
direct == "BAL",
na_item == "B6N") %>%
select(geo, Geo, value_added = values) %>%
full_join(nama_10r_3empers %>%
filter(time == "2015",
nchar(geo) == 4,
wstatus == "EMP",
nace_r2 == "TOTAL") %>%
select(geo, employment = values), by = "geo") %>%
mutate(emp_person = round(1000*value_added / employment)) %>%
select(geo, Geo, emp_person) %>%
na.omit %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}Maps
Code
nama_10r_2hhinc %>%
filter(time == "2015",
nchar(geo) == 4,
direct == "BAL",
na_item == "B6N") %>%
select(geo, Geo, value_added = values) %>%
full_join(nama_10r_3empers %>%
filter(time == "2015",
nchar(geo) == 4,
wstatus == "EMP",
nace_r2 == "TOTAL") %>%
select(geo, employment = values),
by = "geo") %>%
mutate(value = round(1000*value_added / employment)) %>%
select(geo, Geo, value) %>%
right_join(europe_NUTS2, by = "geo") %>%
filter(long >= -15, lat >= 33, value <= 80000) %>%
ggplot(., aes(x = long, y = lat, group = group, fill = value/1000)) +
geom_polygon() + coord_map() +
scale_fill_viridis_c(na.value = "white",
labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
breaks = c(seq(0, 80, 10), 100, 200),
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 = "Compensation / Person")