| source | dataset | Title | .html | .rData |
|---|---|---|---|---|
| oecd | QNA_EXPENDITURE_CAPITA | Quarterly National Accounts, GDP Per Capita | 2026-01-11 | 2026-01-09 |
| oecd | QNA_EXPENDITURE_NATIO_CURR | Quarterly GDP and components - expenditure approach | 2026-01-11 | 2026-01-09 |
Quarterly GDP and components - expenditure approach
Data - OECD
Info
Last
| obsTime | Nobs |
|---|---|
| 2025-Q3 | 3575 |
PRICE_BASE
Code
QNA_EXPENDITURE_NATIO_CURR %>%
left_join(PRICE_BASE, by = "PRICE_BASE") %>%
group_by(PRICE_BASE, Price_base) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()| PRICE_BASE | Price_base | Nobs |
|---|---|---|
| V | Current prices | 354432 |
| L | Chain linked volume | 272479 |
| Q | Constant prices | 20306 |
REF_AREA
Code
QNA_EXPENDITURE_NATIO_CURR %>%
left_join(REF_AREA, by = "REF_AREA") %>%
group_by(REF_AREA, Ref_area) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()TRANSACTION
Code
QNA_EXPENDITURE_NATIO_CURR %>%
left_join(TRANSACTION, by = "TRANSACTION") %>%
group_by(TRANSACTION, Transaction) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()| TRANSACTION | Transaction | Nobs |
|---|---|---|
| P3 | Final consumption expenditure | 149742 |
| P51G | Gross fixed capital formation | 40875 |
| B1GQ | Gross domestic product | 33914 |
| P6 | Exports of goods and services | 33673 |
| P7 | Imports of goods and services | 33673 |
| B11 | External balance of goods and services | 33205 |
| P5 | Gross capital formation | 31257 |
| P61 | Exports of goods | 29807 |
| P62 | Exports of services | 29807 |
| P71 | Imports of goods | 29807 |
| P72 | Imports of services | 29807 |
| P3T5 | Domestic demand | 23319 |
| P31 | Individual consumption expenditure | 21496 |
| P32 | Collective consumption expenditure | 21496 |
| P5M | Changes in inventories and acquisitions less disposals of valuables | 20992 |
| P41 | Actual individual consumption | 20592 |
| P52 | Changes in inventories | 20135 |
| YA0 | Statistical discrepancy (expenditure approach) | 13510 |
| PPP_B1GQ | Purchasing Power Parities for GDP | 12625 |
| P53 | Acquisitions less disposals of valuables | 12083 |
| P3_P51G | Final domestic demand excluding inventories | 3561 |
| P3T6 | Total demand | 1841 |
ACTIVITY
Code
QNA_EXPENDITURE_NATIO_CURR %>%
left_join(ACTIVITY, by = "ACTIVITY") %>%
group_by(ACTIVITY, Activity) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()| ACTIVITY | Activity | Nobs |
|---|---|---|
| _Z | Not applicable | 521875 |
| _T | Total - all activities | 125342 |
U.S. VS Europe
Table
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20"),
FREQ == "Q",
# L = Chain linked volume
PRICE_BASE == "L",
ADJUSTMENT == "Y",
SECTOR == "S1",
obsTime %in% c("1999-Q1", "2023-Q4")) %>%
left_join(TRANSACTION, by = "TRANSACTION") %>%
left_join(QNA_POP_EMPNC_extract, by = c("obsTime", "REF_AREA")) %>%
mutate(obsValue = 4*obsValue/population) %>%
select_if(~ n_distinct(.) > 1) %>%
select(REF_AREA, TRANSACTION, Transaction, obsTime, obsValue) %>%
spread(obsTime, obsValue) %>%
mutate(change = `2023-Q4`-`1999-Q1`) %>%
select(REF_AREA, TRANSACTION, Transaction, change) %>%
spread(REF_AREA, change) %>%
print_table_conditional()| TRANSACTION | Transaction | EA20 | USA |
|---|---|---|---|
| B11 | External balance of goods and services | 1.528137 | -1.7556539 |
| B1GQ | Gross domestic product | 8.158186 | 20.1946805 |
| P3 | Final consumption expenditure | 5.298953 | 16.9207077 |
| P3_P51G | Final domestic demand excluding inventories | NA | 21.9817644 |
| P3T5 | Domestic demand | NA | 21.9736954 |
| P5 | Gross capital formation | 1.286673 | 5.1667210 |
| P51G | Gross fixed capital formation | 1.720997 | 5.1349370 |
| P52 | Changes in inventories | NA | -0.2245078 |
| P5M | Changes in inventories and acquisitions less disposals of valuables | NA | -0.2245078 |
| P6 | Exports of goods and services | 9.986565 | 3.3467965 |
| P61 | Exports of goods | 6.180214 | 2.2405776 |
| P62 | Exports of services | 3.857948 | 1.1329026 |
| P7 | Imports of goods and services | 8.458427 | 5.1024547 |
| P71 | Imports of goods | 5.051708 | 4.1584904 |
| P72 | Imports of services | 3.557045 | 0.9457240 |
| YA0 | Statistical discrepancy (expenditure approach) | NA | -0.2418241 |
P3 - Final consumption expenditure / capita
Code
metadata_load_fr("REF_AREA", "CL_AREA", data = QNA_EXPENDITURE_NATIO_CURR_var)
plot <- QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20"),
FREQ == "Q",
TRANSACTION == "P3",
# L = Chain linked volume
PRICE_BASE == "L",
ADJUSTMENT == "Y",
SECTOR == "S1") %>%
left_join(QNA_POP_EMPNC_extract, by = c("obsTime", "REF_AREA")) %>%
mutate(obsValue = obsValue/population) %>%
quarter_to_date %>%
left_join(REF_AREA, by = "REF_AREA") %>%
filter(date >= as.Date("1999-01-01")) %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Zone euro", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("Consommation par habitant (1999T1 = 100)") +
geom_line(aes(x = date, y = obsValue, color = Ref_area)) +
scale_color_manual(values = c("#B22234", "#003399")) +
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 = c(0.26, 0.8),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(50, 200, 5)) +
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) +
labs(caption = "Source: OCDE, Comptes Trimestriels, Volumes chaînés")
plot
Code
save(plot, file = "QNA_EXPENDITURE_NATIO_CURR_files/figure-html/USA-EA20-1999-percapita-1.RData")U.S., Europe, France, Germany
B1GQ - GDP
1995-
Code
metadata_load("REF_AREA", "CL_AREA", data = QNA_EXPENDITURE_NATIO_CURR_var)
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20", "FRA", "DEU"),
FREQ == "Q",
TRANSACTION == "B1GQ",
PRICE_BASE == "L",
ADJUSTMENT == "Y",
SECTOR == "S1") %>%
quarter_to_date %>%
arrange(desc(date)) %>%
left_join(REF_AREA, by = "REF_AREA") %>%
filter(date >= as.Date("1995-01-01")) %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(Ref_area != "DEU", color2, color)) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("") +
geom_line(aes(x = date, y = obsValue, color = color)) + add_4flags +
scale_color_identity() +
scale_x_date(breaks = c(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)) +
geom_label_repel(data = . %>% filter(date == max(date)),
aes(x = date, y = obsValue, label = round(obsValue, 1), color = color))
1999-
Total
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20", "FRA", "DEU"),
FREQ == "Q",
TRANSACTION == "B1GQ",
PRICE_BASE == "L",
ADJUSTMENT == "Y",
SECTOR == "S1") %>%
quarter_to_date %>%
left_join(REF_AREA, by = "REF_AREA") %>%
filter(date >= as.Date("1999-01-01")) %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(Ref_area != "DEU", color2, color)) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("") +
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)) +
geom_label_repel(data = . %>% filter(date == max(date)),
aes(x = date, y = obsValue, label = round(obsValue, 1), color = color))
Per Capita
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20", "FRA", "DEU"),
FREQ == "Q",
TRANSACTION == "B1GQ",
# L = Chain linked volume
PRICE_BASE == "L",
ADJUSTMENT == "Y",
SECTOR == "S1") %>%
left_join(QNA_POP_EMPNC_extract, by = c("obsTime", "REF_AREA")) %>%
mutate(obsValue = obsValue/population) %>%
quarter_to_date %>%
left_join(REF_AREA, by = "REF_AREA") %>%
filter(date >= as.Date("1999-01-01")) %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(Ref_area != "DEU", color2, color)) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("") +
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)) +
geom_label_repel(data = . %>% filter(date == max(date)),
aes(x = date, y = obsValue, label = round(obsValue, 1), color = color))
P51G - Gross fixed capital formation
1995-
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20", "FRA", "DEU"),
FREQ == "Q",
TRANSACTION == "P51G",
PRICE_BASE == "L",
ADJUSTMENT == "Y",
SECTOR == "S1") %>%
quarter_to_date %>%
arrange(desc(date)) %>%
left_join(REF_AREA, by = "REF_AREA") %>%
filter(date >= as.Date("1995-01-01")) %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(Ref_area != "DEU", color2, color)) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("") +
geom_line(aes(x = date, y = obsValue, color = color)) + add_4flags +
scale_color_identity() +
scale_x_date(breaks = c(seq(1995, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = "none") +
scale_y_log10(breaks = seq(50, 500, 5)) +
geom_label_repel(data = . %>% filter(date == max(date)),
aes(x = date, y = obsValue, label = round(obsValue, 1), color = color))
1999-
Total
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20", "FRA", "DEU"),
FREQ == "Q",
TRANSACTION == "P51G",
PRICE_BASE == "L",
ADJUSTMENT == "Y",
SECTOR == "S1") %>%
quarter_to_date %>%
left_join(REF_AREA, by = "REF_AREA") %>%
filter(date >= as.Date("1999-01-01")) %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(Ref_area != "DEU", color2, color)) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("") +
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)) +
geom_label_repel(data = . %>% filter(date == max(date)),
aes(x = date, y = obsValue, label = round(obsValue, 1), color = color))
Per Capita
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20", "FRA", "DEU"),
FREQ == "Q",
TRANSACTION == "P51G",
# L = Chain linked volume
PRICE_BASE == "L",
ADJUSTMENT == "Y",
SECTOR == "S1") %>%
left_join(QNA_POP_EMPNC_extract, by = c("obsTime", "REF_AREA")) %>%
mutate(obsValue = obsValue/population) %>%
quarter_to_date %>%
left_join(REF_AREA, by = "REF_AREA") %>%
filter(date >= as.Date("1999-01-01")) %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(Ref_area != "DEU", color2, color)) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("") +
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)) +
geom_label_repel(data = . %>% filter(date == max(date)),
aes(x = date, y = obsValue, label = round(obsValue, 1), color = color))
P3 - Final consumption expenditure
All
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20", "FRA", "DEU"),
FREQ == "Q",
TRANSACTION == "P3",
PRICE_BASE == "L",
ADJUSTMENT == "Y",
SECTOR == "S1") %>%
quarter_to_date %>%
arrange(desc(date)) %>%
left_join(REF_AREA, by = "REF_AREA") %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(Ref_area != "DEU", color2, color)) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("") +
geom_line(aes(x = date, y = obsValue, color = color)) + add_4flags +
scale_color_identity() +
scale_x_date(breaks = c(seq(1900, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = "none") +
scale_y_log10(breaks = seq(20, 600, 20))
1995-
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20", "FRA", "DEU"),
FREQ == "Q",
TRANSACTION == "P3",
PRICE_BASE == "L",
ADJUSTMENT == "Y",
SECTOR == "S1") %>%
quarter_to_date %>%
arrange(desc(date)) %>%
left_join(REF_AREA, by = "REF_AREA") %>%
filter(date >= as.Date("1995-01-01")) %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(Ref_area != "DEU", color2, color)) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("") +
geom_line(aes(x = date, y = obsValue, color = color)) + add_4flags +
scale_color_identity() +
scale_x_date(breaks = c(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)) +
geom_label_repel(data = . %>% filter(date == max(date)),
aes(x = date, y = obsValue, label = round(obsValue, 1), color = color))
1999-
Total
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20", "FRA", "DEU"),
FREQ == "Q",
TRANSACTION == "P3",
# L = Chain linked volume
PRICE_BASE == "L",
ADJUSTMENT == "Y",
SECTOR == "S1") %>%
quarter_to_date %>%
left_join(REF_AREA, by = "REF_AREA") %>%
filter(date >= as.Date("1999-01-01")) %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(Ref_area != "DEU", color2, color)) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("") +
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 = c(0.26, 0.8),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(50, 200, 5)) +
geom_label_repel(data = . %>% filter(date == max(date)),
aes(x = date, y = obsValue, label = round(obsValue, 1), color = color))
Per Capita
Code
metadata_load_fr("REF_AREA", "CL_AREA", data = QNA_EXPENDITURE_NATIO_CURR_var)
plot <- QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20", "FRA", "DEU"),
FREQ == "Q",
TRANSACTION == "P3",
# L = Chain linked volume
PRICE_BASE == "L",
ADJUSTMENT == "Y",
SECTOR == "S1") %>%
left_join(QNA_POP_EMPNC_extract, by = c("obsTime", "REF_AREA")) %>%
mutate(obsValue = obsValue/population) %>%
quarter_to_date %>%
left_join(REF_AREA, by = "REF_AREA") %>%
filter(date >= as.Date("1999-01-01")) %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Zone euro", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("Consommation par habitant (1999T1 = 100)") +
geom_line(aes(x = date, y = obsValue, color = Ref_area)) +
scale_color_manual(values = c("#000000", "#B22234", "#808080", "#003399")) +
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 = c(0.26, 0.8),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(50, 200, 5)) +
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) +
labs(caption = "Source: OCDE, Comptes Trimestriels, Volumes chaînés")
save(plot, file = "QNA_EXPENDITURE_NATIO_CURR_files/figure-html/USA-EA20-FRA-DEU-1999-percapita-1.RData")
plot
P31 - Individual consumption expenditure
Code
metadata_load("REF_AREA", "CL_AREA", data = QNA_EXPENDITURE_NATIO_CURR_var)
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20", "FRA", "DEU"),
FREQ == "Q",
TRANSACTION == "P31",
# L = Chain linked volume
PRICE_BASE == "L",
ADJUSTMENT == "Y") %>%
left_join(QNA_POP_EMPNC_extract, by = c("obsTime", "REF_AREA")) %>%
mutate(obsValue = obsValue/population) %>%
quarter_to_date %>%
left_join(REF_AREA, by = "REF_AREA") %>%
filter(date >= as.Date("1999-01-01")) %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(Ref_area != "DEU", color2, color)) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("") +
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)) +
geom_label_repel(data = . %>% filter(date == max(date)),
aes(x = date, y = obsValue, label = round(obsValue, 1), color = color))
P32 - Collective consumption expenditure
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20", "FRA", "DEU"),
FREQ == "Q",
TRANSACTION == "P32",
# L = Chain linked volume
PRICE_BASE == "L",
ADJUSTMENT == "Y") %>%
left_join(QNA_POP_EMPNC_extract, by = c("obsTime", "REF_AREA")) %>%
mutate(obsValue = obsValue/population) %>%
quarter_to_date %>%
left_join(REF_AREA, by = "REF_AREA") %>%
filter(date >= as.Date("1999-01-01")) %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(Ref_area != "DEU", color2, color)) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("") +
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)) +
geom_label_repel(data = . %>% filter(date == max(date)),
aes(x = date, y = obsValue, label = round(obsValue, 1), color = color))
P41 - Actual individual consumption
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20", "FRA", "DEU"),
FREQ == "Q",
TRANSACTION == "P41",
# L = Chain linked volume
PRICE_BASE == "L",
ADJUSTMENT == "Y") %>%
left_join(QNA_POP_EMPNC_extract, by = c("obsTime", "REF_AREA")) %>%
mutate(obsValue = obsValue/population) %>%
quarter_to_date %>%
left_join(REF_AREA, by = "REF_AREA") %>%
filter(date >= as.Date("1999-01-01")) %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(Ref_area != "DEU", color2, color)) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("") +
geom_line(aes(x = date, y = obsValue, color = color)) + add_2flags +
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)) +
geom_label_repel(data = . %>% filter(date == max(date)),
aes(x = date, y = obsValue, label = round(obsValue, 1), color = color))
P3T5 - Domestic demand
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA", "EA20", "FRA", "DEU"),
FREQ == "Q",
TRANSACTION == "P3T5",
# L = Chain linked volume
PRICE_BASE == "L",
ADJUSTMENT == "Y") %>%
left_join(QNA_POP_EMPNC_extract, by = c("obsTime", "REF_AREA")) %>%
mutate(obsValue = obsValue/population) %>%
quarter_to_date %>%
left_join(REF_AREA, by = "REF_AREA") %>%
filter(date >= as.Date("1999-01-01")) %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
arrange(date) %>%
mutate(obsValue = 100 * obsValue / obsValue[1]) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(Ref_area != "DEU", color2, color)) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("") +
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)) +
geom_label_repel(data = . %>% filter(date == max(date)),
aes(x = date, y = obsValue, label = round(obsValue, 1), color = color))
Net exports
Eurozone, US, France, Germany
Tous
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("EA20", "USA", "DEU", "FRA"),
FREQ == "Q",
TRANSACTION %in% c("B11", "B1GQ"),
# L = Chain linked volume
PRICE_BASE == "V",
ADJUSTMENT == "Y") %>%
left_join(REF_AREA, by = "REF_AREA") %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
select_if(~ n_distinct(.) > 1) %>%
select(-OBS_STATUS) %>%
spread(TRANSACTION, obsValue) %>%
quarter_to_date() %>%
filter(date >= as.Date("1970-01-01")) %>%
transmute(date, Ref_area, obsValue = B11/B1GQ) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
ggplot + geom_line(aes(x = date, y = obsValue, color = color)) +
theme_minimal() + xlab("") + ylab("") + scale_color_identity() + add_4flags +
scale_x_date(breaks = c(seq(1970, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 1),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_blank()) +
geom_hline(yintercept = 0, linetype = "dashed")
1990-
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("EA20", "USA", "DEU", "FRA"),
FREQ == "Q",
TRANSACTION %in% c("B11", "B1GQ"),
# L = Chain linked volume
PRICE_BASE == "V",
ADJUSTMENT == "Y") %>%
left_join(REF_AREA, by = "REF_AREA") %>%
left_join(PRICE_BASE, by = "PRICE_BASE") %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
select_if(~ n_distinct(.) > 1) %>%
select(-OBS_STATUS) %>%
spread(TRANSACTION, obsValue) %>%
quarter_to_date() %>%
filter(date >= as.Date("1990-01-01")) %>%
transmute(date, Ref_area, obsValue = B11/B1GQ) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
ggplot + geom_line(aes(x = date, y = obsValue, color = color)) +
theme_minimal() + xlab("") + ylab("") + scale_color_identity() + add_4flags +
scale_x_date(breaks = c(seq(1970, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 1),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_blank()) +
geom_hline(yintercept = 0, linetype = "dashed")
Eurozone, US
Tous
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("EA20", "USA"),
FREQ == "Q",
TRANSACTION %in% c("B11", "B1GQ"),
# L = Chain linked volume
PRICE_BASE == "V",
ADJUSTMENT == "Y") %>%
left_join(REF_AREA, by = "REF_AREA") %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
select_if(~ n_distinct(.) > 1) %>%
spread(TRANSACTION, obsValue) %>%
quarter_to_date() %>%
transmute(date, REF_AREA, Ref_area, obsValue = B11/B1GQ) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(REF_AREA == "USA", color2, color)) %>%
ggplot + geom_line(aes(x = date, y = obsValue, color = color)) +
theme_minimal() + xlab("") + ylab("") + scale_color_identity() + add_2flags +
scale_x_date(breaks = c(seq(1920, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 1),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_blank()) +
geom_hline(yintercept = 0, linetype = "dashed")
1970-
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("EA20", "USA"),
FREQ == "Q",
TRANSACTION %in% c("B11", "B1GQ"),
# L = Chain linked volume
PRICE_BASE == "V",
ADJUSTMENT == "Y") %>%
left_join(REF_AREA, by = "REF_AREA") %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
select_if(~ n_distinct(.) > 1) %>%
spread(TRANSACTION, obsValue) %>%
quarter_to_date() %>%
filter(date >= as.Date("1970-01-01")) %>%
transmute(date, REF_AREA, Ref_area, obsValue = B11/B1GQ) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(REF_AREA == "USA", color2, color)) %>%
ggplot + geom_line(aes(x = date, y = obsValue, color = color)) +
theme_minimal() + xlab("") + ylab("") + scale_color_identity() + add_2flags +
scale_x_date(breaks = c(seq(1970, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 1),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_blank()) +
geom_hline(yintercept = 0, linetype = "dashed")
1990-
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("EA20", "USA"),
FREQ == "Q",
TRANSACTION %in% c("B11", "B1GQ"),
# L = Chain linked volume
PRICE_BASE == "V",
ADJUSTMENT == "Y") %>%
left_join(REF_AREA, by = "REF_AREA") %>%
mutate(Ref_area = ifelse(REF_AREA == "EA20", "Europe", Ref_area)) %>%
group_by(Ref_area) %>%
select_if(~ n_distinct(.) > 1) %>%
spread(TRANSACTION, obsValue) %>%
quarter_to_date() %>%
filter(date >= as.Date("1995-01-01")) %>%
transmute(date, REF_AREA, Ref_area, obsValue = B11/B1GQ) %>%
left_join(colors, by = c("Ref_area" = "country")) %>%
mutate(color = ifelse(REF_AREA == "USA", color2, color)) %>%
ggplot + geom_line(aes(x = date, y = obsValue, color = color)) +
theme_minimal() + xlab("") + ylab("") + scale_color_identity() + add_2flags +
scale_x_date(breaks = c(seq(1970, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 1),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_blank()) +
geom_hline(yintercept = 0, linetype = "dashed")
Exports and Imports as a % of GDP
EA 20
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("EA20"),
FREQ == "Q",
TRANSACTION %in% c("P6", "P7", "B1GQ"),
# L = Chain linked volume
PRICE_BASE == "L",
ADJUSTMENT == "Y") %>%
select_if(~ n_distinct(.) > 1) %>%
select(-OBS_STATUS) %>%
spread(TRANSACTION, obsValue) %>%
quarter_to_date() %>%
transmute(date, `Exports (% of GDP)` = P6/B1GQ, `Imports (% of GDP)` = P7/B1GQ) %>%
gather(variable, value, -date) %>%
ggplot + geom_line(aes(x = date, y = value, color = variable)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = c(seq(1999, 2100, 5), seq(1997, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 5),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_blank())
USA
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("USA"),
FREQ == "Q",
TRANSACTION %in% c("P6", "P7", "B1GQ"),
# L = Chain linked volume
PRICE_BASE == "V",
ADJUSTMENT == "Y") %>%
select_if(~ n_distinct(.) > 1) %>%
spread(TRANSACTION, obsValue) %>%
quarter_to_date() %>%
transmute(date, `Exports (% of GDP)` = P6/B1GQ, `Imports (% of GDP)` = P7/B1GQ) %>%
gather(variable, value, -date) %>%
ggplot + geom_line(aes(x = date, y = value, color = variable)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = c(seq(1940, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_blank())
Germany
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("DEU"),
FREQ == "Q",
TRANSACTION %in% c("P6", "P7", "B1GQ"),
# L = Chain linked volume
PRICE_BASE == "V",
ADJUSTMENT == "Y") %>%
select_if(~ n_distinct(.) > 1) %>%
spread(TRANSACTION, obsValue) %>%
quarter_to_date() %>%
transmute(date, `Exports (% of GDP)` = P6/B1GQ, `Imports (% of GDP)` = P7/B1GQ) %>%
gather(variable, value, -date) %>%
ggplot + geom_line(aes(x = date, y = value, color = variable)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = c(seq(1940, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_blank())
France
Code
QNA_EXPENDITURE_NATIO_CURR %>%
filter(REF_AREA %in% c("FRA"),
FREQ == "Q",
TRANSACTION %in% c("P6", "P7", "B1GQ"),
# L = Chain linked volume
PRICE_BASE == "V",
ADJUSTMENT == "Y") %>%
select_if(~ n_distinct(.) > 1) %>%
spread(TRANSACTION, obsValue) %>%
quarter_to_date() %>%
transmute(date, `Exports (% of GDP)` = P6/B1GQ, `Imports (% of GDP)` = P7/B1GQ) %>%
gather(variable, value, -date) %>%
ggplot + geom_line(aes(x = date, y = value, color = variable)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = c(seq(1940, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_blank())