Balance sheets for non-financial assets - nama_10_nfa_bs

Data - Eurostat

Info

Last observation: Annual: 2025 (N = 280)

First observation: Annual: 1975 (N = 10)

Last data update: 23 jul 2026, 22:08. Last compile: 24 jul 2026, 02:47

Structure

Dwellings (% of GDP): France, Germany, Italy, Spain

Code
nama_10_nfa_bs %>%
  filter(geo %in% c("FR", "DE", "IT", "ES"),
         sector == "S1",
         asset10 == "N111N",
         unit == "CP_MEUR") %>%
  left_join(gdp, by = c("time", "geo")) %>%
  mutate(values = values / gdp) %>%
  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_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1990, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Net dwellings wealth (% of GDP)") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1))

France: Dwellings vs. Land (% of GDP)

Code
nama_10_nfa_bs %>%
  filter(geo == "FR",
         sector == "S1",
         asset10 %in% c("N111N", "N211N"),
         unit == "CP_MEUR") %>%
  left_join(gdp, by = c("time", "geo")) %>%
  mutate(values = values / gdp) %>%
  year_to_date %>%

  ggplot + geom_line(aes(x = date, y = values, color = Asset10)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1975, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Net wealth (% of GDP)") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1))

2018, By Sector

France

Code
nama_10_nfa_bs %>%
  filter(geo %in% c("FR"),
         time == "2019", 
         unit == "CP_MEUR") %>%
  left_join(gdp, by = c("time", "geo")) %>%
  mutate(values = round(100*values / gdp, 1)) %>%
  
  select(sector, asset10, Asset10, values) %>%
  mutate(sector = paste0('<img src="../../icon/sector/vsmall/', sector, '.png" alt="All">')) %>%
  spread(sector, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Germany

Code
nama_10_nfa_bs %>%
  filter(geo %in% c("DE"),
         time == "2018", 
         unit == "CP_MEUR") %>%
  
  left_join(gdp, by = c("time", "geo")) %>%
  mutate(values = round(100*values / gdp, 1)) %>%
  select(sector, asset10, Asset10, values) %>%
  mutate(sector = paste0('<img src="../../icon/sector/vsmall/', sector, '.png" alt="All">')) %>%
  spread(sector, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Italy

Code
nama_10_nfa_bs %>%
  filter(geo %in% c("IT"),
         time == "2018", 
         unit == "CP_MEUR") %>%
  
  left_join(gdp, by = c("time", "geo")) %>%
  mutate(values = round(100*values / gdp, 1)) %>%
  select(sector, asset10, Asset10, values) %>%
  mutate(sector = paste0('<img src="../../icon/sector/vsmall/', sector, '.png" alt="All">')) %>%
  spread(sector, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

United Kingdom

Code
nama_10_nfa_bs %>%
  filter(geo %in% c("UK"),
         time == "2018", 
         unit == "CP_MEUR") %>%
  
  left_join(gdp, by = c("time", "geo")) %>%
  mutate(values = round(100*values / gdp, 1)) %>%
  select(sector, asset10, Asset10, values) %>%
  mutate(sector = paste0('<img src="../../icon/sector/vsmall/', sector, '.png" alt="All">')) %>%
  spread(sector, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

2018, France, Germany, Italy, United Kingdom

All Sector

Code
nama_10_nfa_bs %>%
  filter(geo %in% c("FR", "DE", "IT", "UK"),
         time == "2019", 
         sector == "S1",
         unit == "CP_MEUR") %>%
  left_join(gdp, by = c("time", "geo")) %>%
  mutate(values = round(100*values / gdp, 1)) %>%
  
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Geo = gsub(" ", "-", str_to_lower(Geo)),
         Geo = paste0('<img src="../../icon/flag/vsmall/', Geo, '.png" alt="Flag">')) %>%
  select(Geo, asset10, Asset10, values) %>%
  spread(Geo, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Non-financial corporations

Code
nama_10_nfa_bs %>%
  filter(geo %in% c("FR", "DE", "IT", "UK"),
         time == "2019", 
         sector == "S11",
         unit == "CP_MEUR") %>%
  left_join(gdp, by = c("time", "geo")) %>%
  mutate(values = round(100*values / gdp, 1)) %>%
  
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Geo = gsub(" ", "-", str_to_lower(Geo)),
         Geo = paste0('<img src="../../icon/flag/vsmall/', Geo, '.png" alt="Flag">')) %>%
  select(Geo, asset10, Asset10, values) %>%
  spread(Geo, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Financial corporations

Code
nama_10_nfa_bs %>%
  filter(geo %in% c("FR", "DE", "IT", "UK"),
         time == "2019", 
         sector == "S12",
         unit == "CP_MEUR") %>%
  left_join(gdp, by = c("time", "geo")) %>%
  mutate(values = round(100*values / gdp, 1)) %>%
  
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Geo = gsub(" ", "-", str_to_lower(Geo)),
         Geo = paste0('<img src="../../icon/flag/vsmall/', Geo, '.png" alt="Flag">')) %>%
  select(Geo, asset10, Asset10, values) %>%
  spread(Geo, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

General government

Code
nama_10_nfa_bs %>%
  filter(geo %in% c("FR", "DE", "IT", "UK"),
         time == "2019", 
         sector == "S13",
         unit == "CP_MEUR") %>%
  left_join(gdp, by = c("time", "geo")) %>%
  mutate(values = round(100*values / gdp, 1)) %>%
  
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Geo = gsub(" ", "-", str_to_lower(Geo)),
         Geo = paste0('<img src="../../icon/flag/vsmall/', Geo, '.png" alt="Flag">')) %>%
  select(Geo, asset10, Asset10, values) %>%
  spread(Geo, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Households

Code
nama_10_nfa_bs %>%
  filter(geo %in% c("FR", "DE", "IT", "UK"),
         time == "2019", 
         sector == "S14_S15",
         unit == "CP_MEUR") %>%
  left_join(gdp, by = c("time", "geo")) %>%
  mutate(values = round(100*values / gdp, 1)) %>%
  
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Geo = gsub(" ", "-", str_to_lower(Geo)),
         Geo = paste0('<img src="../../icon/flag/vsmall/', Geo, '.png" alt="Flag">')) %>%
  select(Geo, asset10, Asset10, values) %>%
  spread(Geo, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}