Quarterly National Accounts, GDP Per Capita - QNA_EXPENDITURE_CAPITA

Data - OECD

Structure

U.S., Europe

Tous

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  quarter_to_date() |>
  
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Zone euro à 20", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  #mutate(color = color) %>%
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1995T1 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = Ref_area)) + 
  # #003399, #3C3B6E
  scale_color_manual(values = c("#B22234", "#003399")) +
  geom_rect(data = nber_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#B22234', alpha = 0.1)  +
  geom_rect(data = cepr_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#003399', alpha = 0.1)  +
  scale_x_date(breaks = c(seq(1940, 2100, 5)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.26, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(100, 1000, 20))

1995-

Code
plot <- QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Zone euro à 20", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  #mutate(color = color) %>%
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1995T1 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = Ref_area)) + 
  # #003399, #3C3B6E
  scale_color_manual(values = c("#B22234", "#003399")) +
  geom_rect(data = nber_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#B22234', alpha = 0.1)  +
  geom_rect(data = cepr_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#003399', alpha = 0.1)  +
  scale_x_date(breaks = c(seq(1994, 2100, 5), seq(1997, 2100, 5)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.26, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(50, 200, 5))

plot

Code
save(plot, file = "QNA_EXPENDITURE_CAPITA_files/figure-html/USA-EA-1995-1.RData")

No flags

Code
plot <- QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "EU27_2020"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Zone euro à 20", Ref_area),
         Ref_area = ifelse(REF_AREA == "EU27_2020", "UE à 27", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  ungroup() |>
  add_flag_color("Ref_area") |>
  #mutate(color = color) %>%
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1999T1 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = Ref_area, linetype = Ref_area)) + 
  # #003399, #3C3B6E
  scale_color_manual(values = c("#B22234", "#003399", "#003399")) +
  scale_linetype_manual(values = c("solid", "solid", "dashed")) +
  geom_rect(data = nber_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#B22234', alpha = 0.1)  +
  geom_rect(data = cepr_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#003399', alpha = 0.1)  +
  scale_x_date(breaks = c(seq(1995, 2100, 2)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.26, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(50, 200, 5)) +
  labs(caption = "")

plot

Code
save(plot, file = "QNA_EXPENDITURE_CAPITA_files/figure-html/USA-EA-EU27-1999-1.RData")

1999-

Flags

Code
plot <- QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  quarter_to_date() |>
  filter(date >= as.Date("1999-01-01")) |>
  
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  #mutate(color = color) %>%
  ggplot() + theme_minimal() + xlab("") + ylab("GDP per capita (100 = 1999Q1)") +
  geom_line(aes(x = date, y = obsValue, color = Ref_area)) + 
  # #003399, #3C3B6E
  scale_color_manual(values = c("#003399", "#B22234")) + add_2flags +
  geom_rect(data = nber_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#B22234', alpha = 0.1)  +
  geom_rect(data = cepr_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#003399', alpha = 0.1)  +
  scale_x_date(breaks = c(seq(1999, 2100, 2)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.26, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(50, 200, 5))

plot

No flags

Code
plot <- QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  quarter_to_date() |>
  filter(date >= as.Date("1999-01-01")) |>
  
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Zone euro à 20", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  ungroup() |>
  add_flag_color("Ref_area") |>
  #mutate(color = color) %>%
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1999T1 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = Ref_area)) + 
  # #003399, #3C3B6E
  scale_color_manual(values = c("#B22234", "#003399")) +
  geom_rect(data = nber_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#B22234', alpha = 0.1)  +
  geom_rect(data = cepr_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#003399', alpha = 0.1)  +
  scale_x_date(breaks = c(seq(1999, 2100, 2)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.26, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(50, 200, 5)) +
  labs(caption = "")

plot

Code
save(plot, file = "QNA_EXPENDITURE_CAPITA_files/figure-html/USA-EA-1999-1.RData")

No flags

Code
plot <- QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "EU27_2020"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  quarter_to_date() |>
  filter(date >= as.Date("1999-01-01")) |>
  
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Zone euro à 20", Ref_area),
         Ref_area = ifelse(REF_AREA == "EU27_2020", "UE à 27", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  ungroup() |>
  add_flag_color("Ref_area") |>
  #mutate(color = color) %>%
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1999T1 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = Ref_area, linetype = Ref_area)) + 
  # #003399, #3C3B6E
  scale_color_manual(values = c("#B22234", "#003399", "#003399")) +
  scale_linetype_manual(values = c("solid", "solid", "dashed")) +
  geom_rect(data = nber_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#B22234', alpha = 0.1)  +
  geom_rect(data = cepr_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#003399', alpha = 0.1)  +
  scale_x_date(breaks = c(seq(1999, 2100, 2)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.26, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(50, 200, 5)) +
  labs(caption = "")

plot

Code
save(plot, file = "QNA_EXPENDITURE_CAPITA_files/figure-html/USA-EA-EU27-1999-1.RData")

2000-

Code
plot <- QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  quarter_to_date() |>
  filter(date >= as.Date("2000-01-01")) |>
  
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Euro area (20 countries)", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (2000T1 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = Ref_area)) + 
  # #003399, #3C3B6E
  scale_color_manual(values = c("#B22234", "#003399")) +
  geom_rect(data = nber_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf),
            fill = '#B22234', alpha = 0.1)  +
  geom_rect(data = cepr_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#003399', alpha = 0.1)  +
  scale_x_date(breaks = c(seq(2000, 2100, 2)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.26, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(50, 200, 5))

save(plot, file = "QNA_EXPENDITURE_CAPITA_files/figure-html/USA-EA-2000-1.RData")
plot

2000-, zone euro sans l’Irlande

Code
# Zone euro pondérée par la population de chaque pays (source : QNA_POP_EMPNC),
# à l'exclusion de l'Irlande (PIB par habitant faussé par les multinationales).
euro_ex_irl <- c("AUT", "BEL", "DEU", "ESP", "EST", "FIN", "FRA", "GRC", "HRV",
                  "ITA", "LTU", "LUX", "LVA", "NLD", "PRT", "SVK", "SVN")

gdp_pc_euro <- QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% euro_ex_irl,
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  select(REF_AREA, obsTime, gdp_pc = obsValue)

pop_euro <- QNA_POP_EMPNC |>
  filter(REF_AREA %in% euro_ex_irl,
         FREQ == "Q",
         TRANSACTION == "POP",
         ADJUSTMENT == "N") |>
  select(REF_AREA, obsTime, pop = obsValue)

# Some countries (typically France, Luxembourg) lag the rest in the latest
# quarter for either GDP or population. Rather than drop the whole quarter,
# carry it forward: population barely moves quarter to quarter, and GDP is
# scaled by Eurostat's own real growth rate for that country/quarter when
# available (namq_10_gdp), or left flat otherwise.
iso3_to_iso2 <- c(AUT = "AT", BEL = "BE", DEU = "DE", ESP = "ES", EST = "EE",
                   FIN = "FI", FRA = "FR", GRC = "EL", HRV = "HR", ITA = "IT",
                   LTU = "LT", LUX = "LU", LVA = "LV", NLD = "NL", PRT = "PT",
                   SVK = "SK", SVN = "SI")

estat_growth <- namq_10_gdp |>
  filter(geo %in% iso3_to_iso2,
         na_item == "B1GQ",
         unit == "CLV10_MEUR",
         s_adj == "SCA") |>
  mutate(REF_AREA = names(iso3_to_iso2)[match(geo, iso3_to_iso2)],
         obsTime = paste0(substr(time, 1, 4), "-", substr(time, 5, 6))) |>
  arrange(REF_AREA, obsTime) |>
  group_by(REF_AREA) |>
  mutate(growth = values / lag(values)) |>
  ungroup() |>
  select(REF_AREA, obsTime, growth)

latest_q <- max(gdp_pc_euro$obsTime, pop_euro$obsTime)
prior_q <- max(gdp_pc_euro$obsTime[gdp_pc_euro$obsTime < latest_q])

missing_gdp <- setdiff(euro_ex_irl, gdp_pc_euro$REF_AREA[gdp_pc_euro$obsTime == latest_q])
missing_pop <- setdiff(euro_ex_irl, pop_euro$REF_AREA[pop_euro$obsTime == latest_q])

carried_gdp <- gdp_pc_euro |>
  filter(REF_AREA %in% missing_gdp, obsTime == prior_q) |>
  left_join(estat_growth |> filter(obsTime == latest_q), by = "REF_AREA") |>
  mutate(gdp_pc = gdp_pc * coalesce(growth, 1), obsTime = latest_q) |>
  select(REF_AREA, obsTime, gdp_pc)

carried_pop <- pop_euro |>
  filter(REF_AREA %in% missing_pop, obsTime == prior_q) |>
  mutate(obsTime = latest_q) |>
  select(REF_AREA, obsTime, pop)

gdp_pc_euro <- bind_rows(gdp_pc_euro, carried_gdp)
pop_euro <- bind_rows(pop_euro, carried_pop)

ea_no_irl <- gdp_pc_euro |>
  inner_join(pop_euro, by = c("REF_AREA", "obsTime")) |>
  group_by(obsTime) |>
  filter(n() == length(euro_ex_irl)) |>
  summarise(obsValue = sum(gdp_pc * pop) / sum(pop), .groups = "drop") |>
  mutate(REF_AREA = "EA_NOIRL", Ref_area = "Euro area (without Ireland)")

plot <- QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA == "USA",
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  select(REF_AREA, Ref_area, obsTime, obsValue) |>
  bind_rows(ea_no_irl) |>
  quarter_to_date() |>
  filter(date >= as.Date("2000-01-01")) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (2000T1 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = Ref_area)) +
  # #003399, #3C3B6E
  scale_color_manual(values = c("#003399", "#B22234")) +
  geom_rect(data = nber_recessions |>
              filter(Peak > as.Date("1999-01-01")),
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf),
            fill = '#B22234', alpha = 0.1)  +
  geom_rect(data = cepr_recessions |>
              filter(Peak > as.Date("1999-01-01")),
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf),
            fill = '#003399', alpha = 0.1)  +
  scale_x_date(breaks = c(seq(2000, 2100, 2)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(50, 200, 5))

save(plot, file = "QNA_EXPENDITURE_CAPITA_files/figure-html/USA-EA-2000-2-1.RData")
plot

France, Portugal, Spain, Greece, Italy

1999-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("FRA", "PRT", "ESP", "GRC", "ITA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[date == as.Date("2008-01-01")]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("GDP Per capita (2008 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_5flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

2008-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("FRA", "PRT", "ESP", "GRC", "ITA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2008-01-01")) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[date == as.Date("2008-01-01")]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (2008 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_5flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

France, Germany, Europe, Greece, United States

1995-

Base 100 = 2008

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("FRA", "DEU", "GRC", "EA", "USA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[date == as.Date("2008-01-01")]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("GDP Per capita (2008 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_5flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1995, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

Base 100 = 1995

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("FRA", "DEU", "GRC", "EA", "USA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[date == as.Date("1995-01-01")]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("GDP Per capita (1995 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_5flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1995, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

1996-

Base 100 = 1996

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("FRA", "EA", "USA", "DEU"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("1996-01-01")) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[date == as.Date("1996-01-01")]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("GDP Per capita (1996 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1996, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

2001-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("FRA", "DEU", "GRC", "EA", "USA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2001-01-01")) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[date == as.Date("2008-01-01")]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("GDP Per capita (2008 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_5flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

Base 100 = 2001

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("FRA", "DEU", "GRC", "EA", "USA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2001-01-01")) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[date == as.Date("2001-01-01")]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("GDP Per capita (2001 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_5flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

2008-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("FRA", "DEU", "GRC", "EA", "USA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2008-01-01")) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[date == as.Date("2008-01-01")]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (2008 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_5flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

U.S., Europe, France, Germany

Tous

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "FRA", "DEU"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1995 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_4flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1900, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(100, 1000, 20))

1995-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "FRA", "DEU"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1995 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_4flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

U.S., Europe, France, Italy

Tous

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "FRA", "ITA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_4flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1900, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(100, 1000, 20))

1995-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "FRA", "ITA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1995 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_4flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

1999-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "FRA", "ITA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("1999-01-01")) |>
  rename(Ref_area = Ref_area) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1999 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_4flags +
  scale_color_identity() +
  scale_x_date(breaks = c(seq(1999, 2100, 5), seq(1997, 2100, 5)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

2000-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "FRA", "ITA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2000-01-01")) |>
  rename(Ref_area = Ref_area) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (2000 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_4flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

Janvier 2017-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "FRA", "ITA", "DEU"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2017-01-01")) |>
  rename(Ref_area = Ref_area) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (Janvier 2017 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

Avril 2017-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "FRA", "ITA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2017-04-01")) |>
  rename(Ref_area = Ref_area) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (Avril 2017 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_4flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

Oher graphs

1999-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "ITA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("1999-01-01")) |>
  rename(Ref_area = Ref_area) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1999 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_3flags +
  scale_color_identity() +
  scale_x_date(breaks = c(seq(1999, 2100, 5), seq(1997, 2100, 5)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

1999-

french

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2000-01-01")) |>
  rename(Ref_area = Ref_area) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (2000 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_2flags +
  scale_color_identity() +
  scale_x_date(breaks = c(seq(2000, 2100, 2)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

english

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2000-01-01")) |>
  rename(Ref_area = Ref_area) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("GDP per capita (2000 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_2flags +
  scale_color_identity() +
  scale_x_date(breaks = c(seq(2000, 2100, 2)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

US, Europe, Greece

2000-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "GRC", "ESP"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2000-01-01")) |>
  rename(Ref_area = Ref_area) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area),
         Ref_area = ifelse(REF_AREA == "OECD", "OECD members", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[date == as.Date("2008-01-01")]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("GDP per capita (2000 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_4flags +
  scale_color_identity() +
  scale_x_date(breaks = c(seq(2000, 2100, 2)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

US, Europe, OECD

2000-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "OECD"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2000-01-01")) |>
  rename(Ref_area = Ref_area) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area),
         Ref_area = ifelse(REF_AREA == "OECD", "OECD members", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("GDP per capita (2000 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_3flags +
  scale_color_identity() +
  scale_x_date(breaks = c(seq(2000, 2100, 2)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

2010-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "OECD"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2010-01-01")) |>
  rename(Ref_area = Ref_area) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area),
         Ref_area = ifelse(REF_AREA == "OECD", "OECD members", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("GDP per capita (2010 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_3flags +
  scale_color_identity() +
  scale_x_date(breaks = c(seq(2000, 2100, 2)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

2011-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "OECD"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2011-01-01")) |>
  rename(Ref_area = Ref_area) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area),
         Ref_area = ifelse(REF_AREA == "OECD", "OECD members", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("GDP per capita (2010 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_3flags +
  scale_color_identity() +
  scale_x_date(breaks = c(seq(2000, 2100, 1)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

2019-

Code
QNA_EXPENDITURE_CAPITA |>
  filter(REF_AREA %in% c("USA", "EA", "OECD"),
         FREQ == "Q",
         PRICE_BASE == "LR") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2019-01-01")) |>
  rename(Ref_area = Ref_area) |>
  mutate(Ref_area = ifelse(REF_AREA == "EA", "Europe", Ref_area),
         Ref_area = ifelse(REF_AREA == "OECD", "OECD members", Ref_area)) |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  add_flag_color("Ref_area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("GDP per capita (2010 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_3flags +
  scale_color_identity() +
  scale_x_date(breaks = c(seq(2000, 2100, 1)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))