Non-financial transactions

Data - Eurostat

Info

source dataset Title .html .rData
eurostat nasq_10_nf_tr Non-financial transactions 2025-12-25 2025-12-27

Data on europe

source dataset Title .html .rData
eurostat bop_gdp6_q Main Balance of Payments and International Investment Position items as share of GDP (BPM6) 2025-12-27 2025-12-27
eurostat nama_10_a10 Gross value added and income by A*10 industry breakdowns 2025-12-25 2025-12-27
eurostat nama_10_a10_e Employment by A*10 industry breakdowns 2025-12-25 2025-12-27
eurostat nama_10_gdp GDP and main components (output, expenditure and income) 2025-12-25 2025-12-27
eurostat nama_10_lp_ulc Labour productivity and unit labour costs 2025-12-25 2025-12-27
eurostat namq_10_a10 Gross value added and income A*10 industry breakdowns 2025-12-25 2025-12-27
eurostat namq_10_a10_e Employment A*10 industry breakdowns 2025-05-24 2025-12-27
eurostat namq_10_gdp GDP and main components (output, expenditure and income) 2025-10-27 2025-12-27
eurostat namq_10_lp_ulc Labour productivity and unit labour costs 2025-12-25 2025-12-27
eurostat namq_10_pc Main GDP aggregates per capita 2025-12-25 2025-12-27
eurostat nasa_10_nf_tr Non-financial transactions 2025-12-25 2025-12-27
eurostat nasq_10_nf_tr Non-financial transactions 2025-12-25 2025-12-27
eurostat tipsii40 Net international investment position - quarterly data, % of GDP 2025-12-25 2025-12-27

Info

  • Sector Accounts Dedicated Webpage. html

  • Sector accounts. html

Exemples

Code
ig_b("eurostat", "nasq_10_nf_tr", "650px-MS_S1M_B6G_20Q4_F")

Last

Code
nasq_10_nf_tr %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(2) %>%
  print_table_conditional()
time Nobs
2025Q2 28522
2025Q1 29906

unit

Code
nasq_10_nf_tr %>%
  left_join(unit, by = "unit") %>%
  group_by(unit, Unit) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
unit Unit Nobs
CP_MNAC Current prices, million units of national currency 1808389
CP_MEUR Current prices, million euro 1802340

sector

Code
nasq_10_nf_tr %>%
  left_join(sector, by = "sector") %>%
  group_by(sector, Sector) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
sector Sector Nobs
S1 Total economy 789920
S13 General government 730346
S2 Rest of the world 639946
S14_S15 Households; non-profit institutions serving households 571753
S11 Non-financial corporations 433906
S12 Financial corporations 397530
S1N Not Sectorised 45632
S14 Households 848
S15 Non-profit institutions serving households 848

direct

Code
nasq_10_nf_tr %>%
  left_join(direct, by = "direct") %>%
  group_by(direct, Direct) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
direct Direct Nobs
PAID Paid 1938923
RECV Received 1671806

na_item

Code
nasq_10_nf_tr %>%
  left_join(na_item, by = "na_item") %>%
  group_by(na_item, Na_item) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

s_adj

Code
nasq_10_nf_tr %>%
  left_join(s_adj, by = "s_adj") %>%
  group_by(s_adj, S_adj) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
s_adj S_adj Nobs
NSA Unadjusted data (i.e. neither seasonally adjusted nor calendar adjusted data) 3200120
SCA Seasonally and calendar adjusted data 410609

geo

Code
nasq_10_nf_tr %>%
  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/vsmasll/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Belgium, Luxembourg

All

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("BE", "LU", "FR", "DE", "EA20"),
         na_item %in% c("B2A3G", "B1G"),
         direct == "PAID",
         unit == "CP_MNAC",
         s_adj == "SCA",
         sector == "S11") %>%
  select(geo, time, values, na_item) %>%
  spread(na_item, values) %>%
  mutate(values = B2A3G/B1G) %>%
  quarter_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  na.omit %>%
  ggplot + theme_minimal() + xlab("") + ylab("% of Gross Value Added") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                labels = percent_format(a = 1))

2010

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("BE", "LU", "FR", "DE", "EU"),
         na_item %in% c("B2A3G", "B1G"),
         direct == "PAID",
         unit == "CP_MNAC",
         s_adj == "SCA",
         sector == "S11") %>%
  select(geo, time, values, na_item) %>%
  spread(na_item, values) %>%
  mutate(values = B2A3G/B1G) %>%
  quarter_to_date %>%
  filter(date >= as.Date("2010-01-01")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EU27_2020", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  na.omit %>%
  ggplot + theme_minimal() + xlab("") + ylab("% of Gross Value Added") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                labels = percent_format(a = 1))

France, Germany, Italy, Spain, Europe

Operating surplus and mixed income, gross - B2A3G, S11

Table

Code
load_data("eurostat/geo.Rdata")
nasq_10_nf_tr %>%
  filter(na_item %in% c("B2A3G", "B1G"),
         direct == "PAID",
         unit == "CP_MNAC",
         s_adj == "SCA",
         sector == "S11",
         time %in% c("2022Q4", "2021Q4", "2019Q4")) %>%
  left_join(geo, by = "geo") %>%
  select(geo, Geo, time, values, na_item) %>%
  spread(na_item, values) %>%
  mutate(values = B2A3G/B1G) %>%
  select(-B2A3G, -B1G) %>%
  spread(time, values) %>%
  mutate(`2021Q4-2022Q4` = `2022Q4` - `2021Q4`,
         `2019Q4-2022Q4` = `2022Q4` - `2019Q4`) %>%
  arrange(-`2019Q4-2022Q4`) %>%
  print_table_conditional
geo Geo 2019Q4 2021Q4 2022Q4 2021Q4-2022Q4 2019Q4-2022Q4
NO Norway 0.4849330 0.6270687 0.6506859 0.0236173 0.1657529
EL Greece 0.3612532 0.3851246 0.4423385 0.0572139 0.0810853
IE Ireland 0.7419825 0.7692043 0.7860535 0.0168492 0.0440710
NL Netherlands 0.3995383 0.4454941 0.4392913 -0.0062028 0.0397530
DK Denmark 0.4165516 0.4682542 0.4514557 -0.0167984 0.0349042
BE Belgium 0.4260504 0.4395690 0.4537451 0.0141762 0.0276947
IT Italy 0.4341158 0.4497138 0.4608810 0.0111672 0.0267652
PL Poland 0.4632321 0.4589098 0.4898331 0.0309233 0.0266010
DE Germany 0.3696053 0.4036642 0.3958101 -0.0078541 0.0262048
EU27_2020 European Union - 27 countries (from 2020) 0.4023230 0.4206437 0.4206963 0.0000526 0.0183733
EA20 Euro area – 20 countries (from 2023) 0.3970267 0.4135338 0.4144963 0.0009625 0.0174695
CZ Czechia 0.4490234 0.4330434 0.4660302 0.0329867 0.0170068
EE Estonia 0.4463708 0.4566016 0.4553097 -0.0012919 0.0089389
PT Portugal 0.3810113 0.3511777 0.3882752 0.0370975 0.0072639
FR France 0.3039948 0.3105371 0.3099062 -0.0006309 0.0059114
FI Finland 0.4154136 0.4307969 0.4196133 -0.0111836 0.0041997
ES Spain 0.4116541 0.3847911 0.4098811 0.0250900 -0.0017731
AT Austria 0.4071122 0.4058488 0.4050308 -0.0008180 -0.0020814
SE Sweden 0.3700897 0.3832945 0.3603831 -0.0229114 -0.0097067
RO Romania 0.5244619 0.5398024 0.5144841 -0.0253183 -0.0099778
HU Hungary 0.4458552 0.4415315 0.4176208 -0.0239107 -0.0282344
UK United Kingdom 0.3694683 NA NA NA NA

All

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
         na_item == "B2A3G",
         direct == "PAID",
         unit == "CP_MNAC",
         s_adj == "NSA",
         sector == "S11") %>%
  select(geo, time, values, sector) %>%
  left_join(gdp, by = c("geo", "time")) %>%
  mutate(values = values/gdp) %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  na.omit %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 10), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                labels = percent_format(a = 1))

1998-

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
         na_item == "B2A3G",
         direct == "PAID",
         unit == "CP_MNAC",
         s_adj == "NSA",
         sector == "S11") %>%
  select(geo, time, values, sector) %>%
  left_join(gdp, by = c("geo", "time")) %>%
  mutate(values = values/gdp) %>%
  quarter_to_date %>%
  filter(date >= as.Date("1998-01-01")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  na.omit %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                labels = percent_format(a = 1))

2010-

NSA

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
         na_item == "B2A3G",
         direct == "PAID",
         unit == "CP_MNAC",
         s_adj == "NSA",
         sector == "S11") %>%
  select(geo, time, values, sector) %>%
  left_join(gdp, by = c("geo", "time")) %>%
  mutate(values = values/gdp) %>%
  quarter_to_date %>%
  filter(date >= as.Date("2010-01-01")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  na.omit %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                labels = percent_format(a = 1))

SCA

RECV
Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
         na_item == "B2A3G",
         direct == "RECV",
         unit == "CP_MNAC",
         s_adj == "SCA",
         sector == "S11") %>%
  select(geo, time, values, sector) %>%
  left_join(gdp, by = c("geo", "time")) %>%
  mutate(values = values/gdp) %>%
  quarter_to_date %>%
  filter(date >= as.Date("2010-01-01")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  na.omit %>%
  ggplot + theme_minimal() + xlab("") + ylab("% of GDP") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                labels = percent_format(a = 1))

2017-

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
         na_item == "B2A3G",
         direct == "PAID",
         unit == "CP_MNAC",
         s_adj == "NSA",
         sector == "S11") %>%
  select(geo, time, values, sector) %>%
  left_join(gdp, by = c("geo", "time")) %>%
  mutate(values = values/gdp) %>%
  quarter_to_date %>%
  filter(date >= as.Date("2017-01-01")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  na.omit %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                labels = percent_format(a = 1))

Net lending / Borrowing: financial saving rate (B9)

France, Germany, Italy, Spain

B9

B9

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR"),
         na_item == "B9",
         s_adj == "NSA",
         #direct == "PAID",
         unit == "CP_MNAC") %>%
  left_join(sector, by = "sector") %>%
  left_join(gdp_adj, by = c("geo", "time", "s_adj")) %>%
  mutate(values = values/gdp) %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  filter(date >= as.Date("1999-01-01")) %>%
  arrange(desc(date)) %>%
  select(date, values, Sector, direct) %>%
  ggplot + theme_minimal() + xlab("") + ylab("% of GDP") +
  geom_line(aes(x = date, y = values, color = Sector, linetype = direct)) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 100, 1),
                labels = percent_format(a = 1))

1999-

% of GDP

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
         na_item == "B9",
         #s_adj == "SCA",
         #direct == "PAID",
         unit == "CP_MNAC",
         sector %in% c("S14_S15")) %>%
  select(geo, time, values, sector) %>%
  left_join(namq_10_gdp_B1GQ_NSA_CPMNAC, by = c("geo", "time")) %>%
  mutate(values = values/B1GQ_NSA_CPMNAC) %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  filter(date >= as.Date("1999-01-01")) %>%
  ggplot + theme_minimal() + xlab("") + ylab("% of GDP") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 100, 1),
                labels = percent_format(a = 1))

1999-

% of GDP

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
         na_item == "B9",
         s_adj == "SCA",
         #direct == "PAID",
         unit == "CP_MNAC",
         sector %in% c("S13")) %>%
  select(geo, time, values, sector) %>%
  left_join(namq_10_gdp_B1GQ_NSA_CPMNAC, by = c("geo", "time")) %>%
  mutate(values = values/B1GQ_NSA_CPMNAC) %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  filter(date >= as.Date("1999-01-01")) %>%
  ggplot + theme_minimal() + xlab("") + ylab("% of GDP") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 100, 1),
                labels = percent_format(a = 1))

Saving Rate (B8G)

France, Germany, Italy, Spain

All

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES"),
         na_item == "B8G",
         s_adj == "SCA",
         direct == "PAID",
         unit == "CP_MNAC",
         sector == "S14_S15") %>%
  select(geo, time, values, sector) %>%
  left_join(namq_10_gdp_B1GQ_NSA_CPMNAC, by = c("geo", "time")) %>%
  mutate(values = values/B1GQ_NSA_CPMNAC) %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + theme_minimal() + xlab("") + ylab("% of GDP") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 10), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                labels = percent_format(a = 1))

1999-

% of GDP

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
         na_item == "B8G",
         s_adj == "SCA",
         direct == "PAID",
         unit == "CP_MNAC",
         sector == "S14_S15") %>%
  select(geo, time, values, sector) %>%
  left_join(namq_10_gdp_B1GQ_NSA_CPMNAC, by = c("geo", "time")) %>%
  mutate(values = values/B1GQ_NSA_CPMNAC) %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  filter(date >= as.Date("1999-01-01")) %>%
  ggplot + theme_minimal() + xlab("") + ylab("% of GDP") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                labels = percent_format(a = 1))

% of Disposable income

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
         na_item %in% c("B8G", "B6G"),
         s_adj == "SCA",
         direct == "PAID",
         unit == "CP_MNAC",
         sector == "S14_S15") %>%
  select(geo, time, values, sector, na_item) %>%
  spread(na_item, values) %>%
  mutate(values = B8G/B6G) %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  filter(date >= as.Date("1999-01-01")) %>%
  ggplot + theme_minimal() + xlab("") + ylab("B8G/B6G (% of Disposable income)") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 2),
                labels = percent_format(a = 1))

2000-

% of GDP

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
         na_item == "B8G",
         s_adj == "SCA",
         direct == "PAID",
         unit == "CP_MNAC",
         sector == "S14_S15") %>%
  select(geo, time, values, sector) %>%
  left_join(namq_10_gdp_B1GQ_NSA_CPMNAC, by = c("geo", "time")) %>%
  mutate(values = values/B1GQ_NSA_CPMNAC) %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  filter(date >= as.Date("2000-01-01")) %>%
  ggplot + theme_minimal() + xlab("") + ylab("% of GDP") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                labels = percent_format(a = 1))

% of Disposable income

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
         na_item %in% c("B8G", "B6G"),
         s_adj == "SCA",
         direct == "PAID",
         unit == "CP_MNAC",
         sector == "S14_S15") %>%
  select(geo, time, values, sector, na_item) %>%
  spread(na_item, values) %>%
  mutate(values = B8G/B6G) %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  filter(date >= as.Date("2000-01-01")) %>%
  ggplot + theme_minimal() + xlab("") + ylab("B8G/B6G (% of Disposable income)") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 2),
                labels = percent_format(a = 1))

2015-

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
         na_item == "B8G",
         s_adj == "SCA",
         direct == "PAID",
         unit == "CP_MNAC",
         sector == "S14_S15") %>%
  select(geo, time, values, sector) %>%
  left_join(namq_10_gdp_B1GQ_NSA_CPMNAC, by = c("geo", "time")) %>%
  mutate(values = values/B1GQ_NSA_CPMNAC) %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  filter(date >= as.Date("2015-01-01")) %>%
  ggplot + theme_minimal() + xlab("") + ylab("% of GDP") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                labels = percent_format(a = 1))

Operating surplus and mixed income, gross

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "B2A3G",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S1") %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  ggplot + geom_line(aes(x = date, y = values/1000, color = Geo, linetype = Geo)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("") +
  scale_y_log10(breaks = c(c(1, 2, 3, 5, 8, 10), 10*c(1, 2, 3, 5, 8, 10), 100*c(1, 2, 3, 5, 8, 10)),
                labels = dollar_format(suffix = " Bn€", prefix = "", accuracy = 1))

Tables

France

Code
nasq_10_nf_tr %>%
  filter(geo == "FR",
         time == "2019Q1",
         s_adj == "NSA",
         direct == "PAID",
         unit == "CP_MNAC") %>%
  left_join(namq_10_gdp_B1GQ_NSA_CPMNAC, by = c("geo", "time")) %>%
  mutate(values = round(100*values/B1GQ_NSA_CPMNAC, 1) %>% paste0("%")) %>%
  left_join(na_item, by = "na_item") %>%
  select(na_item, Na_item, sector, values) %>%
  spread(sector, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Germany

Code
nasq_10_nf_tr %>%
  filter(geo == "DE",
         time == "2019Q1",
         s_adj == "NSA",
         direct == "PAID",
         unit == "CP_MNAC") %>%
  left_join(namq_10_gdp_B1GQ_NSA_CPMNAC, by = c("geo", "time")) %>%
  mutate(values = round(100*values/B1GQ_NSA_CPMNAC, 1) %>% paste0("%")) %>%
  left_join(na_item, by = "na_item") %>%
  select(na_item, Na_item, sector, values) %>%
  spread(sector, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Italy

Code
nasq_10_nf_tr %>%
  filter(geo == "IT",
         time == "2019Q1",
         s_adj == "NSA",
         direct == "PAID",
         unit == "CP_MNAC") %>%
  left_join(namq_10_gdp_B1GQ_NSA_CPMNAC, by = c("geo", "time")) %>%
  mutate(values = round(100*values/B1GQ_NSA_CPMNAC, 1) %>% paste0("%")) %>%
  left_join(na_item, by = "na_item") %>%
  select(na_item, Na_item, sector, values) %>%
  spread(sector, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

B8G

France

Code
nasq_10_nf_tr %>%
  filter(geo == "FR",
         time == "2019Q1",
         s_adj == "NSA",
         direct == "PAID",
         unit == "CP_MNAC") %>%
  left_join(namq_10_gdp_B1GQ_NSA_CPMNAC, by = c("geo", "time")) %>%
  mutate(values = round(100*values/B1GQ_NSA_CPMNAC, 1) %>% paste0("%")) %>%
  left_join(na_item, by = "na_item") %>%
  select(na_item, Na_item, sector, values) %>%
  spread(sector, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

France

Code
nasq_10_nf_tr %>%
  filter(geo == "FR",
         na_item == "B8G",
         s_adj == "SCA",
         #direct == "PAID",
         unit == "CP_MNAC") %>%
  select(geo, time, values, sector, direct) %>%
  left_join(namq_10_gdp_B1GQ_NSA_CPMNAC, by = c("geo", "time")) %>%
  mutate(values = values/B1GQ_NSA_CPMNAC) %>%
  quarter_to_date %>%
  left_join(sector, by = "sector") %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = values, color = Sector, linetype = direct)) +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.7),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                labels = percent_format(a = 1))

Germany

Code
nasq_10_nf_tr %>%
  filter(geo == "DE",
         na_item == "B8G",
         s_adj == "SCA",
         direct == "PAID",
         unit == "CP_MNAC") %>%
  select(geo, time, values, sector) %>%
  left_join(namq_10_gdp_B1GQ_NSA_CPMNAC, by = c("geo", "time")) %>%
  mutate(values = values/B1GQ_NSA_CPMNAC) %>%
  quarter_to_date %>%
  left_join(sector, by = "sector") %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = values, color = Sector)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                labels = percent_format(a = 1))

France, Germany, Italy

B8G - Saving, Gross

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "B8G",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S1") %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  mutate(values = values/1000) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("") + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = c(c(1, 2, 3, 5, 8, 10),
                           10*c(1, 2, 3, 5, 8, 10),
                           100*c(1, 2, 3, 5, 8, 10)),
                labels = dollar_format(suffix = " Bn€", prefix = "", accuracy = 1))

B6G_R_HAB - GDI of households in real terms per capita

1999-

Value

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "B6G_R_HAB",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color, linetype = direct)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank())

Index = 1999

These
Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "EA"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "B6G_R_HAB",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("GDI of households in real terms per capita") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 200, 2)) +
  geom_label_repel(data = . %>% filter(date == max(date)), aes(x = date, y = values, label = round(values, 1), color = color))

Index = 1999

These
Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "B6G_R_HAB",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("GDI of households in real terms per capita") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 200, 2)) +
  geom_label_repel(data = . %>% filter(date == max(date)), aes(x = date, y = values, label = round(values, 1), color = color))

All
Code
nasq_10_nf_tr %>%
  filter(na_item == "B6G_R_HAB",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("GDI of households in real terms per capita") +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 200, 2)) +
  geom_label_repel(data = . %>% filter(date == max(date)), aes(x = date, y = values, label = paste0(Geo, ": ", round(values, 1)), color = color))

2017-

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "B6G_R_HAB",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2017-01-01")) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("B6G - Disposable income, Gross") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 200, 2))

Implicit price index in it

B6G/POP/B6G_R_HAB

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item %in% c("B6G_R_HAB", "B6G"),
         sector == "S14_S15",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC") %>%
  select(time, geo, na_item, values) %>%
  spread(na_item, values) %>%
  left_join(POP, by = c("geo", "time")) %>%
  transmute(time, geo, values = B6G/NSA/B6G_R_HAB) %>%
  quarter_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("Implicit price index") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 200, 2)) +
  geom_label_repel(data = . %>% filter(date == max(date)), aes(x = date, y = values, label = paste0(date, " : ", round(values, 1)), color = color))

B6G - Disposable income, Gross

All

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "B6G",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S1") %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  mutate(values = values/1000) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("") + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = c(c(1, 2, 3, 5, 8, 10),
                           10*c(1, 2, 3, 5, 8, 10),
                           100*c(1, 2, 3, 5, 8, 10)),
                labels = dollar_format(suffix = " Bn€", prefix = "", accuracy = 1))

1996-

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "B6G",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S1") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1996-01-01")) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("B6G - Disposable income, Gross") + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1995, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 1000, 5)) +
  geom_label_repel(data = . %>% filter(date == max(date)), aes(x = date, y = values, label = round(values, 1), color = color))

1999-

These

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "B6G",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S1") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("B6G - Disposable income, Gross") + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 1000, 5)) +
  geom_label_repel(data = . %>% filter(date == max(date)), aes(x = date, y = values, label = paste0(Geo, ": ", round(values, 1)), color = color))

Population

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "B6G",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "NSA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S1") %>%
  left_join(POP, by = c("geo", "time")) %>%
  quarter_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = values/NSA) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("B6G - Disposable income, Gross/Population") + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 1000, 5)) +
  geom_label_repel(data = . %>% filter(date == max(date)), aes(x = date, y = values, label = paste0(Geo, ": ", round(values, 1)), color = color))

All

Code
nasq_10_nf_tr %>%
  filter(na_item == "B6G",
         geo != "RO",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S1") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("B6G - Disposable income, Gross") + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 1000, 5)) +
  geom_label_repel(data = . %>% filter(date == max(date)), aes(x = date, y = values, label = paste0(Geo, ": ", round(values, 1)), color = color))

2017-

Nominal

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "B6G",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S1") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2017-01-01")) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("B6G - Disposable income, Gross") + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 200, 5))

Households

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "B6G",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S14_S15") %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  mutate(values = values/1000) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = c(c(1, 2, 3, 5, 8, 10),
                           10*c(1, 2, 3, 5, 8, 10),
                           100*c(1, 2, 3, 5, 8, 10)),
                labels = dollar_format(suffix = " Bn€", prefix = "", accuracy = 1))

B2A3G - Operating surplus and mixed income, gross

All

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         na_item == "B2A3G",
         s_adj == "SCA",
         direct == "PAID",
         unit == "CP_MNAC",
         sector == "S1") %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  mutate(values = values/1000) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = c(c(1, 2, 3, 5, 8, 10),
                           10*c(1, 2, 3, 5, 8, 10),
                           100*c(1, 2, 3, 5, 8, 10)),
                labels = dollar_format(suffix = " Bn€", prefix = "", accuracy = 1))

2000-

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         na_item == "B2A3G",
         s_adj == "SCA",
         direct == "PAID",
         unit == "CP_MNAC",
         sector == "S1") %>%
  quarter_to_date %>%
  left_join(geo, by = "geo") %>%
  mutate(values = values/1000) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  filter(date >= as.Date("2000-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = c(c(1, 2, 3, 5, 8, 10),
                           10*c(1, 2, 3, 5, 8, 10),
                           100*c(1, 2, 3, 5, 8, 10)),
                labels = dollar_format(suffix = " Bn€", prefix = "", accuracy = 1))

D4 - Property income

1999-

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "D4",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S14_S15") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("Households, D4 - Property Income") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(20, 1000, 20))

2017-

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "D4",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "SCA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S14_S15") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2017-01-01")) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("Households, D4 - Property Income") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(20, 1000, 20))

D41

1999-

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "D41",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "NSA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S14_S15") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("D41") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(20, 1000, 20))

2017-

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item == "D4",
         # SCA: Seasonally and calendar adjusted data
         s_adj == "NSA",
         # PAID: Paid
         direct == "PAID",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S14_S15") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2017-01-01")) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo) %>%
  arrange(date) %>%
  mutate(values = 100*values/values[1]) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + xlab("") + ylab("Households, D4 - Property Income") + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(20, 1000, 20))

France

2017-

Table

RECV

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR"),
         s_adj == "NSA",
         # PAID: Paid
         direct == "RECV",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S14_S15",
         time %in% c("2017Q1", "2023Q3")) %>%
  left_join(na_item, by = "na_item") %>%
  select_if(~ n_distinct(.) > 1) %>%
  spread(time, values) %>%
  mutate(growth = 100*(.[[4]]/.[[3]]-1)) %>%
  #arrange(-growth) %>%
  print_table_conditional()

Compensation of employees

Received

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item %in% c("D1"),
         # SCA: Seasonally and calendar adjusted data
         s_adj == "NSA",
         # PAID: Paid
         direct == "RECV",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S14_S15") %>%
  quarter_to_date %>%
  left_join(na_item, by = "na_item") %>%
  filter(date >= as.Date("2017-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Na_item)) +
  theme_minimal()  + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(0000, 1000000, 10000))

Interest

Received

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item %in% c("D4", "D41", "D41G"),
         # SCA: Seasonally and calendar adjusted data
         s_adj == "NSA",
         # PAID: Paid
         direct == "RECV",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S14_S15") %>%
  quarter_to_date %>%
  left_join(na_item, by = "na_item") %>%
  filter(date >= as.Date("2017-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Na_item)) +
  theme_minimal()  + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(0000, 100000, 5000))

Rents

Received

Code
nasq_10_nf_tr %>%
  filter(geo %in% c("FR"),
         # B2A3G: Operating surplus and mixed income, gross
         na_item %in% c("D42", "D43", "D44", "D45", "D42_TO_D45"),
         # SCA: Seasonally and calendar adjusted data
         s_adj == "NSA",
         # PAID: Paid
         direct == "RECV",
         # CP_MNAC: Current prices, million units of national currency
         unit == "CP_MNAC",
         # S1: Total economy
         sector == "S14_S15") %>%
  quarter_to_date %>%
  left_join(na_item, by = "na_item") %>%
  filter(date >= as.Date("2017-01-01")) %>%
  arrange(date) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Na_item)) +
  theme_minimal()  + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(0000, 100000, 10000))