Non-financial transactions
Data - Eurostat
Info
Last observation: Quarterly: 2026Q1 (N = 30,902)
First observation: Quarterly: 1980Q1 (N = 1,270)
Last data update: 14 aoû 2026, 01:18. Last compile: 14 aoû 2026, 04:27
Structure
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, Geo, time, values, na_item) |>
spread(na_item, values) |>
mutate(values = B2A3G/B1G) |>
quarter_to_date() |>
filter(date >= as.Date("1995-01-01")) |>
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_flags +
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, Geo, time, values, na_item) |>
spread(na_item, values) |>
mutate(values = B2A3G/B1G) |>
quarter_to_date() |>
filter(date >= as.Date("2010-01-01")) |>
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_flags +
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")) |>
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.3612275 | 0.3852907 | 0.4424808 | 0.0571901 | 0.0812533 |
| NL | Netherlands | 0.3993802 | 0.4454876 | 0.4395694 | -0.0059182 | 0.0401892 |
| IE | Ireland | 0.7428724 | 0.7639405 | 0.7782141 | 0.0142736 | 0.0353417 |
| DK | Denmark | 0.4165516 | 0.4682542 | 0.4514557 | -0.0167984 | 0.0349042 |
| PL | Poland | 0.4625543 | 0.4574017 | 0.4901147 | 0.0327131 | 0.0275604 |
| BE | Belgium | 0.4260504 | 0.4395690 | 0.4534174 | 0.0138485 | 0.0273670 |
| DE | Germany | 0.3696053 | 0.4036642 | 0.3958101 | -0.0078541 | 0.0262048 |
| IT | Italy | 0.4341158 | 0.4497484 | 0.4597518 | 0.0100033 | 0.0256360 |
| EU27_2020 | European Union - 27 countries (from 2020) | 0.4018518 | 0.4200249 | 0.4192523 | -0.0007725 | 0.0174006 |
| EA21 | Euro area – 21 countries (from 2026) | 0.3969058 | 0.4150413 | 0.4140754 | -0.0009659 | 0.0171696 |
| CZ | Czechia | 0.4491002 | 0.4333004 | 0.4662111 | 0.0329107 | 0.0171108 |
| EE | Estonia | 0.4462676 | 0.4563201 | 0.4549820 | -0.0013381 | 0.0087144 |
| PT | Portugal | 0.3810113 | 0.3511777 | 0.3882752 | 0.0370975 | 0.0072639 |
| FR | France | 0.3026377 | 0.3094957 | 0.3071477 | -0.0023480 | 0.0045100 |
| FI | Finland | 0.4154136 | 0.4298641 | 0.4191657 | -0.0106984 | 0.0037521 |
| ES | Spain | 0.4116541 | 0.3847911 | 0.4098811 | 0.0250900 | -0.0017731 |
| AT | Austria | 0.4072483 | 0.4059177 | 0.4050478 | -0.0008698 | -0.0022005 |
| RO | Romania | 0.5246418 | 0.5418981 | 0.5161538 | -0.0257443 | -0.0084879 |
| SE | Sweden | 0.3697364 | 0.3842477 | 0.3589587 | -0.0252891 | -0.0107777 |
| HU | Hungary | 0.4466520 | 0.4456604 | 0.4257870 | -0.0198734 | -0.0208650 |
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, Geo, time, values, sector) |>
left_join(gdp, by = c("geo", "time")) |>
mutate(values = values/gdp) |>
quarter_to_date() |>
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_flags +
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, 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")) |>
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_flags +
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, 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")) |>
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_flags +
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
PAID
% of GDP
Code
nasq_10_nf_tr |>
filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
na_item == "B2A3G",
direct == "PAID",
unit == "CP_MNAC",
s_adj == "SCA",
sector == "S11") |>
select(geo, 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")) |>
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_flags +
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))
% of Gross Value Added (GVA)
All
Code
nasq_10_nf_tr |>
filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
na_item %in% c("B2A3G", "B1G"),
direct == "PAID",
unit == "CP_MNAC",
s_adj == "SCA",
sector == "S11") |>
select(geo, Geo, time, values, na_item) |>
spread(na_item, values) |>
mutate(values = B2A3G/B1G) |>
quarter_to_date() |>
filter(date >= as.Date("1995-01-01")) |>
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_flags +
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("FR", "DE", "IT", "ES", "EA20"),
na_item %in% c("B2A3G", "B1G"),
direct == "PAID",
unit == "CP_MNAC",
s_adj == "SCA",
sector == "S11") |>
select(geo, Geo, time, values, na_item) |>
spread(na_item, values) |>
mutate(values = B2A3G/B1G) |>
quarter_to_date() |>
filter(date >= as.Date("2010-01-01")) |>
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_flags +
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))
2014-
Code
load_data("eurostat/geo_fr.Rdata")
geo_fr <- geo |>
setNames(c("geo", "Geo_fr"))
load_data("eurostat/geo.Rdata")
nasq_10_nf_tr |>
filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
na_item %in% c("B2A3G", "B1G"),
direct == "PAID",
unit == "CP_MNAC",
s_adj == "SCA",
sector == "S11") |>
select(geo, Geo, time, values, na_item) |>
spread(na_item, values) |>
mutate(values = B2A3G/B1G) |>
quarter_to_date() |>
filter(date >= as.Date("2014-01-01")) |>
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_flags +
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)) +
theme(legend.position = c(0.55, 0.50),
legend.title = element_blank())
2017-
Code
load_data("eurostat/geo_fr.Rdata")
geo_fr <- geo |>
setNames(c("geo", "Geo_fr"))
load_data("eurostat/geo.Rdata")
nasq_10_nf_tr |>
filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
na_item %in% c("B2A3G", "B1G"),
direct == "PAID",
unit == "CP_MNAC",
s_adj == "SCA",
sector == "S11") |>
select(geo, Geo, time, values, na_item) |>
spread(na_item, values) |>
mutate(values = B2A3G/B1G) |>
quarter_to_date() |>
filter(date >= as.Date("2017-01-01")) |>
mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) |>
left_join(colors, by = c("Geo" = "country")) |>
na.omit() |>
ggplot() + theme_minimal() + xlab("") + ylab("B2A3G/B1G (% of GDP)") +
geom_line(aes(x = date, y = values, color = color)) +
scale_color_identity() + add_flags +
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)) +
theme(legend.position = c(0.55, 0.50),
legend.title = element_blank()) +
geom_text_repel(data = . %>%
group_by(geo) %>%
filter(date %in% c(as.Date("2017-01-01"),
as.Date("2020-01-01"),
max(date))),
aes(x = date, y = values, color = color, label = percent(values, acc = 0.01)))
2017-
Code
load_data("eurostat/geo_fr.Rdata")
geo_fr <- geo |>
setNames(c("geo", "Geo_fr")) |>
mutate(Geo_fr = ifelse(geo == "DE", "Allemagne", Geo_fr),
Geo_fr = ifelse(geo == "EA20", "Zone Euro", Geo_fr))
load_data("eurostat/geo.Rdata")
nasq_10_nf_tr |>
filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
na_item %in% c("B2A3G", "B1G"),
direct == "PAID",
unit == "CP_MNAC",
s_adj == "SCA",
sector == "S11") |>
select(geo, Geo, time, values, na_item) |>
spread(na_item, values) |>
mutate(values = B2A3G/B1G) |>
quarter_to_date() |>
filter(date >= as.Date("2017-01-01")) |>
mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) |>
left_join(colors, by = c("Geo" = "country")) |>
na.omit() |>
ggplot() + theme_minimal() + xlab("") + ylab("Excédent d'exploitation et revenu mixte (% du PIB)") +
geom_line(aes(x = date, y = values, color = color)) +
scale_color_identity() + add_flags +
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)) +
theme(legend.position = c(0.1, 0.4),
legend.title = element_blank())
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, 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")) |>
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_flags +
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, 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")) |>
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_flags +
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(gdp_adj, by = c("geo", "time", "s_adj")) |>
mutate(values = values/gdp) |>
quarter_to_date() |>
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, 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() |>
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_flags +
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, 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() |>
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_flags +
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, 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(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_flags +
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, 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() |>
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_flags +
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, Geo, time, values, sector, na_item) |>
spread(na_item, values) |>
mutate(values = B8G/B6G) |>
quarter_to_date() |>
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_flags +
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, 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() |>
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_flags +
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, Geo, time, values, sector, na_item) |>
spread(na_item, values) |>
mutate(values = B8G/B6G) |>
quarter_to_date() |>
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_flags +
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, 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() |>
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_flags +
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() |>
mutate(values = values/1000) |>
left_join(colors, by = c("Geo" = "country")) |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
scale_color_identity() + add_flags +
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("%")) |>
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("%")) |>
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("%")) |>
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("%")) |>
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, Geo, time, values, sector, Sector, direct) |>
left_join(namq_10_gdp_B1GQ_NSA_CPMNAC, by = c("geo", "time")) |>
mutate(values = values/B1GQ_NSA_CPMNAC) |>
quarter_to_date() |>
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, Geo, time, values, sector, Sector) |>
left_join(namq_10_gdp_B1GQ_NSA_CPMNAC, by = c("geo", "time")) |>
mutate(values = values/B1GQ_NSA_CPMNAC) |>
quarter_to_date() |>
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() |>
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_flags +
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(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_flags +
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")) |>
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_flags +
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")) |>
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_flags +
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")) |>
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")) |>
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_flags +
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, Geo, na_item, values) |>
spread(na_item, values) |>
left_join(POP |> select(geo, time, NSA), by = c("geo", "time")) |>
transmute(time, geo, Geo, values = B6G/NSA/B6G_R_HAB) |>
quarter_to_date() |>
filter(date >= as.Date("1999-01-01")) |>
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_flags +
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() |>
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_flags +
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")) |>
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_flags +
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")) |>
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_flags +
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 |> select(geo, time, NSA), by = c("geo", "time")) |>
quarter_to_date() |>
filter(date >= as.Date("1999-01-01")) |>
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_flags +
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")) |>
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_flags +
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))
2001-
Code
nasq_10_nf_tr |>
filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
# 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") |>
left_join(POP |> select(geo, time, NSA), by = c("geo", "time")) |>
quarter_to_date() |>
filter(date >= as.Date("2001-01-01")) |>
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_flags +
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", "EA20"),
# 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")) |>
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_flags +
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)) +
geom_label_repel(data = . %>% filter(date == max(date)), aes(x = date, y = values, label = paste0(Geo, ": ", round(values, 1)), color = color))
Nominal/population
Code
nasq_10_nf_tr |>
filter(geo %in% c("FR", "DE", "IT", "ES", "EA20"),
# 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") |>
left_join(POP |> select(geo, time, NSA), by = c("geo", "time")) |>
quarter_to_date() |>
filter(date >= as.Date("2017-01-01")) |>
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_flags +
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)) +
geom_label_repel(data = . %>% filter(date == max(date)), aes(x = date, y = values, label = paste0(Geo, ": ", round(values, 1)), color = color))
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() |>
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_flags +
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() |>
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_flags +
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() |>
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_flags +
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")) |>
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_flags +
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")) |>
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_flags +
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")) |>
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_flags +
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")) |>
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_flags +
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
PAID
Code
nasq_10_nf_tr |>
filter(geo %in% c("FR"),
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",
time %in% c("2017Q1", "2023Q3")) %>%
select_if(~ n_distinct(.) > 1) |>
spread(time, values) %>%
mutate(growth = 100*(.[[4]]/.[[3]]-1)) |>
#arrange(-growth) %>%
print_table_conditional()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")) %>%
select_if(~ n_distinct(.) > 1) |>
spread(time, values) %>%
mutate(growth = 100*(.[[4]]/.[[3]]-1)) |>
#arrange(-growth) %>%
print_table_conditional()Compensation of employees
Paid
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 == "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")) |>
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, 30000, 1000))
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() |>
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
Paid
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 == "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")) |>
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, 30000, 1000))
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() |>
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
Paid
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 == "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")) |>
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, 30000, 50))
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() |>
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))