Gross domestic product (GDP) at current market prices by NUTS 3 regions - nama_10r_3gdp

Data - Eurostat

Info

LAST_DOWNLOAD

Code
tibble(LAST_DOWNLOAD = as.Date(file.info("~/iCloud/website/data/eurostat/nama_10r_3gdp.RData")$mtime)) %>%
  print_table_conditional()
LAST_DOWNLOAD
2026-02-23

LAST_COMPILE

LAST_COMPILE
2026-02-24

Last

Code
nama_10r_3gdp %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(1) %>%
  print_table_conditional()
time Nobs
2024 6706

unit

Code
nama_10r_3gdp %>%
  left_join(unit, by = "unit") %>%
  group_by(unit, Unit) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
unit Unit Nobs
MIO_EUR Million euro 43650
MIO_NAC Million units of national currency 43650
MIO_PPS_EU27_2020 Million purchasing power standards (PPS, EU27 from 2020) 43650
EUR_HAB Euro per inhabitant 41357
EUR_HAB_EU27_2020 Euro per inhabitant in percentage of the EU27 (from 2020) average 41357
PPS_EU27_2020_HAB Purchasing power standard (PPS, EU27 from 2020), per inhabitant 41357
PPS_HAB_EU27_2020 Purchasing power standard (PPS, EU27 from 2020), per inhabitant in percentage of the EU27 (from 2020) average 41357

geo

Code
nama_10r_3gdp %>%
  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
nama_10r_3gdp %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  print_table_conditional()
time Nobs
2024 6706
2023 12058
2022 12231
2021 12358
2020 12358
2019 12358
2018 12358
2017 12358
2016 12358
2015 12358
2014 12358
2013 12350
2012 12350
2011 12134
2010 12134
2009 12134
2008 12134
2007 11783
2006 11783
2005 11755
2004 11755
2003 11755
2002 11340
2001 11556
2000 11556

Table - Per Inhabitant

Code
nama_10r_3gdp %>%
  filter(time == "2017",
         unit %in% c("EUR_HAB", "PPS_EU27_2020_HAB")) %>%
  select(geo, unit, values) %>%
  left_join(geo, by = "geo") %>%
  spread(unit, values) %>%
  arrange(-`EUR_HAB`) %>%
  print_table_conditional()

NUTS 0

Code
nama_10r_3gdp %>%
  filter(time == "2016", 
         nchar(geo) == 2,
         unit == "EUR_HAB") %>%
  right_join(europe_NUTS0, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(0, 200, 10),
                       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 = "€ / inhabitant")

NUTS 1

EUR_HAB

Code
nama_10r_3gdp %>%
  filter(time == "2016", 
         nchar(geo) == 3,
         unit == "EUR_HAB") %>%
  right_join(europe_NUTS1, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(0, 200, 10),
                       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 = "€ / inhabitant")

PPS_EU27_2020_HAB

Code
nama_10r_3gdp %>%
  filter(time == "2016", 
         nchar(geo) == 3,
         unit == "PPS_EU27_2020_HAB") %>%
  right_join(europe_NUTS1, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(0, 200, 10),
                       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 = "€ / inhabitant")

NUTS 2

EUR_HAB

Code
nama_10r_3gdp %>%
  filter(time == "2016", 
         nchar(geo) == 4,
         unit == "EUR_HAB") %>%
  right_join(europe_NUTS2, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(0, 200, 20),
                       values = c(0, 0.05, 0.1, 0.15, 0.2, 0.25, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "€ / inhabitant")

PPS_EU27_2020_HAB

Code
nama_10r_3gdp %>%
  filter(time == "2016", 
         nchar(geo) == 4,
         unit == "PPS_EU27_2020_HAB") %>%
  right_join(europe_NUTS2, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(0, 200, 20),
                       values = c(0, 0.05, 0.1, 0.15, 0.2, 0.25, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "€ / inhabitant")

NUTS 3

2016

Code
nama_10r_3gdp %>%
  filter(time == "2016", 
         nchar(geo) == 5,
         unit == "EUR_HAB") %>%
  right_join(europe_NUTS3, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(0, 600, 50),
                       values = c(0, 0.02, 0.04, 0.06, 0.08, 0.1, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "€ / inhabitant")

2019

Code
nama_10r_3gdp %>%
  filter(time == "2019", 
         nchar(geo) == 5,
         unit == "EUR_HAB") %>%
  right_join(europe_NUTS3, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(10, 250, 30),
                       values = c(0, 0.1, 0.15, 0.2, 0.25, 0.3,0.35, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "PIB / habitant, 2019\n(milliers €)\n")

2018

Code
nama_10r_3gdp %>%
  filter(time == "2018", 
         nchar(geo) == 5,
         unit == "EUR_HAB") %>%
  right_join(europe_NUTS3, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(10, 250, 30),
                       values = c(0, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "PIB / habitant\n(milliers €)\n")

NUTS 3 - Log

Code
nama_10r_3gdp %>%
  filter(time == "2016", 
         nchar(geo) == 5,
         unit == "EUR_HAB") %>%
  right_join(europe_NUTS3, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = c(1, 2, 3, 5, 10, 20, 30, 50, 100, 200, 300, 1000),
                       trans = scales::pseudo_log_trans(sigma = 0.001)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "€ / inhabitant")