Current account balance - annual data

Data - Eurostat

Info

source dataset .html .RData
eurostat prc_hicp_ctrb 2024-11-05 2024-10-08

Data on europe

Code
load_data("europe.RData")
europe %>%
  source_dataset_file_updates()
source dataset .html .RData
eurostat bop_gdp6_q 2024-11-05 2024-10-09
eurostat nama_10_a10 2024-11-05 2024-10-08
eurostat nama_10_a10_e 2024-11-05 2024-11-05
eurostat nama_10_gdp 2024-11-05 2024-10-08
eurostat nama_10_lp_ulc 2024-11-05 2024-10-08
eurostat namq_10_a10 2024-11-05 2024-11-05
eurostat namq_10_a10_e 2024-11-05 2024-10-08
eurostat namq_10_gdp 2024-11-05 2024-10-08
eurostat namq_10_lp_ulc 2024-11-05 2024-11-04
eurostat namq_10_pc 2024-11-05 2024-10-08
eurostat nasa_10_nf_tr 2024-11-05 2024-10-08
eurostat nasq_10_nf_tr 2024-11-05 2024-10-09
eurostat tipsii40 2024-11-01 2024-11-01

LAST_COMPILE

LAST_COMPILE
2024-11-05

Last

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

geo

Code
tipsbp20 %>%
  left_join(geo, by = "geo") %>%
  group_by(geo, Geo) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

France, Germany, Italy, Spain, Netherlands

With Bands

Code
tipsbp20 %>%
  filter(geo %in% c("DE", "ES", "FR", "IT", "NL"),
         unit == "PC_GDP") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/100) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) + theme_minimal() +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Current account balance - 3 year average") +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 2),
                     labels = scales::percent_format(accuracy = 1)) +
  geom_hline(yintercept = 0.06, linetype = "dashed") +
  geom_hline(yintercept = -0.04, linetype = "dashed")

no Bands

Code
tipsbp20 %>%
  filter(geo %in% c("DE", "ES", "FR", "IT", "NL"),
         unit == "PC_GDP") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/100) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) + theme_minimal() +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Current account balance - 3 year average") +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 2),
                     labels = scales::percent_format(accuracy = 1))

France, Germany, Italy, Spain, Portugal

Code
tipsbp20 %>%
  filter(geo %in% c("FR", "DE", "PT", "ES", "IT"),
         unit == "PC_GDP") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/100) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) + theme_minimal() +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Current account balance - 3 year average") +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 2),
                     labels = scales::percent_format(accuracy = 1))

France, Germany, Portugal

Code
tipsbp20 %>%
  filter(geo %in% c("FR", "DE", "PT"),
         unit == "PC_GDP") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/100) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) + theme_minimal() +
  scale_color_identity() + add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Current account balance - 3 year average") +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 2),
                     labels = scales::percent_format(accuracy = 1))

Poland, Hungary, Slovenia

Code
tipsbp20 %>%
  filter(geo %in% c("PL", "HU", "SI"),
         unit == "PC_GDP") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/100) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) + theme_minimal() +
  scale_color_identity() + add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Current account balance - 3 year average") +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 2),
                     labels = scales::percent_format(accuracy = 1))

Mean, Standard Deviation

All

Viridis

Code
tipsbp20 %>%
  year_to_date %>%
  filter(date >= as.Date("2005-01-01"),
         unit == "PC_GDP") %>%
  group_by(date) %>%
  summarise(`Moyenne` = mean(values),
            `Ecart Type` = sd(values)) %>%
  transmute(date, `Moyenne`,
            `Moyenne + SD` = `Moyenne` + `Ecart Type`,
            `Moyenne - SD` = `Moyenne` - `Ecart Type`) %>%
  gather(variable, value, -date) %>%
  mutate(value = value/100) %>%
  ggplot + geom_line(aes(x = date, y = value, color = variable, linetype = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_color_manual(values = c(viridis(3)[1], viridis(3)[2], viridis(3)[2])) +
  scale_linetype_manual(values = c("solid", "dashed", "dashed")) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank()) +
  geom_hline(yintercept = 0.06, linetype = "dotted") +
  geom_hline(yintercept = -0.04, linetype = "dotted")

Colors

Code
tipsbp20 %>%
  year_to_date %>%
  filter(date >= as.Date("2005-01-01"),
         unit == "PC_GDP") %>%
  group_by(date) %>%
  summarise(`Moyenne` = mean(values),
            `Ecart Type` = sd(values)) %>%
  transmute(date, `Moyenne`,
            `Moyenne + SD` = `Moyenne` + `Ecart Type`,
            `Moyenne - SD` = `Moyenne` - `Ecart Type`) %>%
  gather(variable, value, -date) %>%
  mutate(value = value/100) %>%
  ggplot + geom_line(aes(x = date, y = value, color = variable, linetype = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_color_manual(values = c("#003399", "#FFCC00", "#FFCC00")) +
  scale_linetype_manual(values = c("solid", "dashed", "dashed")) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2022, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank()) +
  geom_hline(yintercept = 0.06, linetype = "dotted") +
  geom_hline(yintercept = -0.04, linetype = "dotted")

With France

Code
tipsbp20 %>%
  year_to_date %>%
  filter(date >= as.Date("2005-01-01"),
         unit == "PC_GDP") %>%
  group_by(date) %>%
  summarise(`Moyenne Europe` = mean(values),
            `Ecart Type` = sd(values),
            `France` = values[geo == "FR"]) %>%
  transmute(date, `Moyenne Europe`,
            `Moyenne Europe + SD` = `Moyenne Europe` + `Ecart Type`,
            `Moyenne Europe - SD` = `Moyenne Europe` - `Ecart Type`,
             `France`) %>%
  gather(variable, value, -date) %>%
  mutate(values = value/100,
         Geo = ifelse(variable == "France", "France", "Europe")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = variable, linetype = variable)) +
  theme_minimal() + xlab("") + ylab("") + add_4flags +
  scale_color_manual(values = c("#ED2939", "#003399", "#FFCC00", "#FFCC00")) +
  scale_linetype_manual(values = c("solid", "solid", "dashed", "dashed")) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  theme(legend.position = c(0.75, 0.2),
        legend.title = element_blank()) +
  geom_hline(yintercept = 0.06, linetype = "dotted") +
  geom_hline(yintercept = -0.04, linetype = "dotted")

With Germany

Code
tipsbp20 %>%
  year_to_date %>%
  filter(date >= as.Date("2005-01-01"),
         unit == "PC_GDP") %>%
  group_by(date) %>%
  summarise(`Moyenne Europe` = mean(values),
            `Ecart Type` = sd(values),
            `France` = values[geo == "FR"],
            `Allemagne` = values[geo == "DE"]) %>%
  transmute(date, `Moyenne Europe`,
            `Moyenne Europe + SD` = `Moyenne Europe` + `Ecart Type`,
            `Moyenne Europe - SD` = `Moyenne Europe` - `Ecart Type`,
             `France`,
             `Allemagne`) %>%
  gather(variable, value, -date) %>%
  mutate(values = value/100,
         Geo = ifelse(variable == "France", "France", "Europe"),
         Geo = ifelse(variable == "Allemagne", "Germany", Geo)) %>%
  ggplot + geom_line(aes(x = date, y = values, color = variable, linetype = variable)) +
  theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_color_manual(values = c("#000000", "#ED2939", "#003399", "#FFCC00", "#FFCC00")) +
  scale_linetype_manual(values = c("solid", "solid", "solid", "dashed", "dashed")) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  theme(legend.position = c(0.75, 0.2),
        legend.title = element_blank()) +
  geom_hline(yintercept = 0.06, linetype = "dotted") +
  geom_hline(yintercept = -0.04, linetype = "dotted")

Eurozone

Code
geo <- geo %>%
  mutate(eurozone = ifelse(Geo %in% c("Austria", "Belgium", "Cyprus", "Estonia", "Finland", "France", 
                                      "Germany", "Greece", "Ireland", "Italy", "Latvia", "Lithuania", 
                                      "Luxembourg", "Malta", "Netherlands", "Portugal", "Slovakia",
                                      "Slovenia", "Spain"), T, F),
         non_eurozone = ifelse(Geo %in% c("Bulgaria", "Croatia", "Czechia", "Denmark", 
                                          "Hungary", "Poland", "Romania", "Sweden"), T, F))
tipsbp20 %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  filter(date >= as.Date("2005-01-01"),
         unit == "PC_GDP", eurozone) %>%
  group_by(date) %>%
  summarise(`Moyenne` = mean(values),
            `Ecart Type` = sd(values)) %>%
  transmute(date, `Moyenne`,
            `Moyenne + SD` = `Moyenne` + `Ecart Type`,
            `Moyenne - SD` = `Moyenne` - `Ecart Type`) %>%
  gather(variable, value, -date) %>%
  mutate(value = value/100) %>%
  ggplot + geom_line(aes(x = date, y = value, color = variable, linetype = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_color_manual(values = c(viridis(3)[1], viridis(3)[2], viridis(3)[2])) +
  scale_linetype_manual(values = c("solid", "dashed", "dashed")) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  theme(legend.position = c(0.85, 0.2),
        legend.title = element_blank()) +
  geom_hline(yintercept = 0.06, linetype = "dotted") +
  geom_hline(yintercept = -0.04, linetype = "dotted")

Non Eurozone

Code
tipsbp20 %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  filter(date >= as.Date("2005-01-01"),
         unit == "PC_GDP", non_eurozone) %>%
  group_by(date) %>%
  summarise(`Moyenne` = mean(values),
            `Ecart Type` = sd(values)) %>%
  transmute(date, `Moyenne`,
            `Moyenne + SD` = `Moyenne` + `Ecart Type`,
            `Moyenne - SD` = `Moyenne` - `Ecart Type`) %>%
  gather(variable, value, -date) %>%
  mutate(value = value/100) %>%
  ggplot + geom_line(aes(x = date, y = value, color = variable, linetype = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_color_manual(values = c(viridis(3)[1], viridis(3)[2], viridis(3)[2])) +
  scale_linetype_manual(values = c("solid", "dashed", "dashed")) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  theme(legend.position = c(0.85, 0.2),
        legend.title = element_blank()) +
  geom_hline(yintercept = 0.06, linetype = "dotted") +
  geom_hline(yintercept = -0.04, linetype = "dotted")