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
2025-05-18

LAST_COMPILE

LAST_COMPILE
2025-05-18

Last

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

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 40765
MIO_NAC Million units of national currency 40765
MIO_PPS_EU27_2020 Million purchasing power standards (PPS, EU27 from 2020) 40765
EUR_HAB Euro per inhabitant 39317
EUR_HAB_EU27_2020 Euro per inhabitant in percentage of the EU27 (from 2020) average 39317
PPS_EU27_2020_HAB Purchasing power standard (PPS, EU27 from 2020), per inhabitant 39317
PPS_HAB_EU27_2020 Purchasing power standard (PPS, EU27 from 2020), per inhabitant in percentage of the EU27 (from 2020) average 39317

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
2023 6712
2022 12007
2021 12358
2020 12218
2019 12358
2018 12351
2017 12344
2016 12344
2015 12344
2014 12358
2013 12210
2012 12210
2011 12210
2010 12210
2009 12091
2008 12091
2007 11740
2006 11740
2005 11712
2004 11712
2003 10872
2002 10457
2001 10457
2000 10457

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