Équilibre du produit intérieur brut

Données - INSEE

Info

Last observation: Annuelle: 2025 (N = 1) · Trimestrielle: 2026-Q2 (N = 61)

First observation: Annuelle: 1950 (N = 1) · Trimestrielle: 1949-Q1 (N = 48)

Number of observations: 20 630

Last data update: 14 aoû 2026, 20:42. Last compile: 15 aoû 2026, 03:18

Structure

Info

  • Méthodologie des comptes trimestriels, Base 2005. Insee Méthodes n° 126 - mai 2012. html / pdf

Données sur la macroéconomie en France

source dataset Title Updated
bdf CFT Comptes Financiers Trimestriels 2026-08-10
insee CNA-2014-CONSO-SI Dépenses de consommation finale par secteur institutionnel 2026-08-13
insee CNA-2014-CSI Comptes des secteurs institutionnels 2026-08-13
insee CNA-2014-FBCF-BRANCHE Formation brute de capital fixe (FBCF) par branche 2026-08-13
insee CNA-2014-FBCF-SI Formation brute de capital fixe (FBCF) par secteur institutionnel 2026-08-13
insee CNA-2014-RDB Revenu et pouvoir d’achat des ménages 2026-08-13
insee CNA-2020-CONSO-MEN Consommation des ménages 2026-08-13
insee CNA-2020-PIB Produit intérieur brut (PIB) et ses composantes 2026-08-13
insee CNT-2014-CB Comptes des branches 2026-08-13
insee CNT-2014-CSI Comptes de secteurs institutionnels 2026-08-13
insee CNT-2014-OPERATIONS Opérations sur biens et services 2026-08-13
insee CNT-2014-PIB-EQB-RF Équilibre du produit intérieur brut 2026-08-13
insee CONSO-MENAGES-2020 Consommation des ménages en biens 2026-08-13
insee ICA-2015-IND-CONS Indices de chiffre d'affaires dans l'industrie et la construction 2026-08-13
insee conso-mensuelle Consommation de biens, données mensuelles 2026-08-02
insee t_1101 1.101 – Le produit intérieur brut et ses composantes à prix courants (En milliards d'euros) 2026-08-02
insee t_1102 1.102 – Le produit intérieur brut et ses composantes en volume aux prix de l'année précédente chaînés (En milliards d'euros 2014) 2026-08-02
insee t_1105 1.105 – Produit intérieur brut - les trois approches à prix courants (En milliards d'euros) - t_1105 2026-08-02

LAST_COMPILE

LAST_COMPILE
2026-08-15

Last

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(TIME_PERIOD == max(TIME_PERIOD)) |>
  select(TIME_PERIOD, TITLE_FR, OBS_VALUE) |>
  print_table_conditional()

Last - 2022-Q1

Tous

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(TIME_PERIOD == "2022-Q1") %>%
  select_if(~ n_distinct(.) > 1) |>
  select(-IDBANK, -TITLE_EN) |>
  arrange(-OBS_VALUE) |>
  print_table_conditional()

% du PIB

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         TIME_PERIOD == "2022-Q1") %>%
  select_if(~ n_distinct(.) > 1) |>
  select(-IDBANK, -TITLE_EN) |>
  arrange(-OBS_VALUE) |>
  mutate(`% of GDP` = round(100*OBS_VALUE/OBS_VALUE[OPERATION == "PIB"], 1)) |>
  print_table_conditional()
SECT-INST OPERATION CNA_PRODUIT TITLE_FR OBS_VALUE OBS_REV Sect-Inst Operation Cna_produit Obs_rev % of GDP
SO DINTF SO Demande intérieure totale finale - Valeur aux prix courants - Série CVS-CJO 659570 1 Sans objet Demande intérieure totale finale Sans objet Révision 101.6
SO DINTFHS SO Demande intérieure totale finale hors stocks - Valeur aux prix courants - Série CVS-CJO 657974 1 Sans objet Demande intérieure totale finale hors stocks Sans objet Révision 101.4
SO PIB SO Produit intérieur brut total - Valeur aux prix courants - Série CVS-CJO 649106 1 Sans objet PIB - Produit intérieur brut Sans objet Révision 100.0
SO P4 D-CNT Dépenses de consommation totales - Valeur aux prix courants - Série CVS-CJO 507212 1 Sans objet P4 - Consommation finale effective Ensemble des biens et services Révision 78.1
S14 P3 D-CNT Dépenses de consommation des ménages - Total - Valeur aux prix courants - Série CVS-CJO 331900 1 S14 - Ménages y compris entreprises individuelles P3 - Dépense de consommation finale Ensemble des biens et services Révision 51.1
SO P7 D-CNT Importations - Total - Valeur aux prix courants - Série CVS-CJO 240472 1 Sans objet P7 - Importations de biens et services Ensemble des biens et services Révision 37.0
SO P6 D-CNT Exportations - Total - Valeur aux prix courants - Série CVS-CJO 230008 1 Sans objet P6 - Exportations de biens et services Ensemble des biens et services Révision 35.4
SO P3 SO Dépenses de consommation des APU - Total - Valeur aux prix courants - Série CVS-CJO 160480 1 Sans objet P3 - Dépense de consommation finale Sans objet Révision 24.7
S0 P51 D-CNT FBCF de l'ensemble des secteurs institutionnels - Total - Valeur aux prix courants - Série CVS-CJO 150762 1 S0 - Ensemble des secteurs institutionnels P51 - Formation brute de capital fixe Ensemble des biens et services Révision 23.2
SO P31 D-CNT Dépenses de consommation individualisable des APU - Total - Valeur aux prix courants - Série CVS-CJO 104633 1 Sans objet P31 - Dépense de consommation finale individuelle Ensemble des biens et services Révision 16.1
S11 P51S D-CNT Investissement des entreprises non financières - Total - Valeur aux prix courants - Série CVS-CJO 78225 1 S11 - Sociétés non financières P51S - FBCF des entreprises non financières (y compris entreprises individuelles) Ensemble des biens et services Révision 12.1
SO P32 D-CNT Dépenses de consommation collective des APU - Total - Valeur aux prix courants - Série CVS-CJO 55848 1 Sans objet P32 - Dépense de consommation finale collective Ensemble des biens et services Révision 8.6
SO D211 D-CNT TVA - Total - Valeur aux prix courants - Série CVS-CJO 48212 1 Sans objet D211 - Impôts de type 'Taxe à la Valeur Ajoutée' (TVA) Ensemble des biens et services Révision 7.4
S14 P51M D-CNT FBCF des ménages - Total - Valeur aux prix courants - Série CVS-CJO 38037 1 S14 - Ménages y compris entreprises individuelles P51M - FBCF des ménages (hors entreprises individuelles) Ensemble des biens et services Révision 5.9
SO D214 D-CNT Autres impôts sur les produits - Total - Valeur aux prix courants - Série CVS-CJO 30002 1 Sans objet D214 - Autres impôts sur les produits Ensemble des biens et services Révision 4.6
S13 P51G D-CNT FBCF des administrations publiques - Total - Valeur aux prix courants - Série CVS-CJO 26551 1 S13 - Administrations publiques (APU) P51G - Formation brute de capital fixe Ensemble des biens et services Révision 4.1
S15 P3 D-CNT Dépenses de consommation des ISBLSM - Total - Valeur aux prix courants - Série CVS-CJO 14833 NA S15 - Institutions sans but lucratif au service des ménages P3 - Dépense de consommation finale Ensemble des biens et services NA 2.3
S12 P51B D-CNT FBCF des sociétés financières - Total - Valeur aux prix courants - Série CVS-CJO 6577 1 S12 - Sociétés financières P51B - FBCF des entreprises financières (y compris entreprises individuelles) Ensemble des biens et services Révision 1.0
SO P54 D-CNT Stocks et acquisitions moins cessions d'objets de valeur - Total - Valeur aux prix courants - Série CVS-CJO 1596 1 Sans objet P54 - Stocks et acquisitions moins cession d'objets de valeur Ensemble des biens et services Révision 0.2
S15 P51P D-CNT FBCF des ISBLSM - Total - Valeur aux prix courants - Série CVS-CJO 1372 NA S15 - Institutions sans but lucratif au service des ménages P51P - FBCF des ISBLSM Ensemble des biens et services NA 0.2
SO P52 D-CNT Variation des stocks - Total - Valeur aux prix courants - Série CVS-CJO 1343 1 Sans objet P52 - Variation de stocks Ensemble des biens et services Révision 0.2
SO D212 D-CNT Impôts sur importations - Total - Valeur aux prix courants - Série CVS-CJO 829 NA Sans objet D212 - Impôts sur les importations autres que la taxe à la valeur ajoutée Ensemble des biens et services NA 0.1
SO P53 D-CNT Acquisitions moins cessions d'objets de valeur - Total - Valeur aux prix courants - Série CVS-CJO 253 NA Sans objet P53 - Acquisitions moins cession d'objets de valeur Ensemble des biens et services NA 0.0
SO D319 D-CNT Subventions - Total - Valeur aux prix courants - Série CVS-CJO -5903 NA Sans objet D319 - Autres subventions sur les produits Ensemble des biens et services NA -0.9
SO SOLDE SO Solde extérieur total - Valeur aux prix courants - Série CVS-CJO -10464 1 Sans objet SOLDE - Solde extérieur total Sans objet Révision -1.6

Deflators

All

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P4"),
         VALORISATION %in% c("V", "L"),
         NATURE == "VALEUR_ABSOLUE") %>%
  select_if(~ n_distinct(.) > 1) |>
  select(-IDBANK, -TITLE_EN) |>
  rowwise() |>
  mutate(date = TIME_PERIOD_to_date(TIME_PERIOD)) |>
  arrange(desc(date)) |>
  group_by(OPERATION, `SECT-INST`, date) |>
  summarise(deflator = 100*OBS_VALUE[VALORISATION == "V"]/OBS_VALUE[VALORISATION == "L"]) |>
  ungroup() |>
  left_join(OPERATION, by = "OPERATION") |>
  left_join(`SECT-INST`, by = "SECT-INST") |>
  mutate(variable = paste0(OPERATION, " - ", `Sect-Inst`)) |>
  ggplot() + geom_line(aes(x = date, y = deflator, color = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10() +
  theme(legend.position = c(0.5, 0.8),
        legend.title = element_blank())

1999-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P4"),
         VALORISATION %in% c("V", "L"),
         NATURE == "VALEUR_ABSOLUE") %>%
  select_if(~ n_distinct(.) > 1) |>
  select(-IDBANK, -TITLE_EN) |>
  rowwise() |>
  mutate(date = TIME_PERIOD_to_date(TIME_PERIOD)) |>
  arrange(desc(date)) |>
  group_by(OPERATION, `SECT-INST`, date) |>
  summarise(OBS_VALUE = 100*OBS_VALUE[VALORISATION == "V"]/OBS_VALUE[VALORISATION == "L"]) |>
  ungroup() |>
  left_join(OPERATION, by = "OPERATION") |>
  left_join(`SECT-INST`, by = "SECT-INST") |>
  mutate(variable = paste0(OPERATION, " - ", `Sect-Inst`)) |>
  filter(date >= as.Date("1999-01-01")) |>
  
  group_by(variable) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE  , color = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1999, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 200, 5)) +
  theme(legend.position = c(0.5, 0.8),
        legend.title = element_blank())+
  geom_label_repel(data = . %>%
               filter(date == max(date)), aes(date, y = OBS_VALUE, label = round(OBS_VALUE, 1),color = variable))

2014-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P4"),
         VALORISATION %in% c("V", "L"),
         NATURE == "VALEUR_ABSOLUE") %>%
  select_if(~ n_distinct(.) > 1) |>
  select(-IDBANK, -TITLE_EN) |>
  rowwise() |>
  mutate(date = TIME_PERIOD_to_date(TIME_PERIOD)) |>
  arrange(desc(date)) |>
  group_by(OPERATION, `SECT-INST`, date) |>
  summarise(OBS_VALUE = 100*OBS_VALUE[VALORISATION == "V"]/OBS_VALUE[VALORISATION == "L"]) |>
  ungroup() |>
  left_join(OPERATION, by = "OPERATION") |>
  left_join(`SECT-INST`, by = "SECT-INST") |>
  filter(date >= as.Date("2014-01-01")) |>
  mutate(variable = paste0(OPERATION, " - ", `Sect-Inst`)) |>
  group_by(variable) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE  , color = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10() +
  theme(legend.position = c(0.5, 0.8),
        legend.title = element_blank())

2019-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P4"),
         VALORISATION %in% c("V", "L"),
         NATURE == "VALEUR_ABSOLUE") %>%
  select_if(~ n_distinct(.) > 1) |>
  select(-IDBANK, -TITLE_EN) |>
  rowwise() |>
  mutate(date = TIME_PERIOD_to_date(TIME_PERIOD)) |>
  arrange(desc(date)) |>
  group_by(OPERATION, `SECT-INST`, date) |>
  summarise(deflator = 100*OBS_VALUE[VALORISATION == "V"]/OBS_VALUE[VALORISATION == "L"]) |>
  ungroup() |>
  left_join(OPERATION, by = "OPERATION") |>
  left_join(`SECT-INST`, by = "SECT-INST") |>
  filter(date >= as.Date("2019-01-01")) |>
  mutate(variable = paste0(OPERATION, " - ", `Sect-Inst`)) |>
  ggplot() + geom_line(aes(x = date, y = deflator, color = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10() +
  theme(legend.position = c(0.5, 0.8),
        legend.title = element_blank())

2017T2-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P4"),
         VALORISATION %in% c("V", "L"),
         NATURE == "VALEUR_ABSOLUE") %>%
  select_if(~ n_distinct(.) > 1) |>
  select(-IDBANK, -TITLE_EN) |>
  rowwise() |>
  mutate(date = TIME_PERIOD_to_date(TIME_PERIOD)) |>
  arrange(desc(date)) |>
  group_by(OPERATION, `SECT-INST`, date) |>
  summarise(OBS_VALUE = 100*OBS_VALUE[VALORISATION == "V"]/OBS_VALUE[VALORISATION == "L"]) |>
  ungroup() |>
  left_join(OPERATION, by = "OPERATION") |>
  left_join(`SECT-INST`, by = "SECT-INST") |>
  mutate(variable = paste0(OPERATION, " - ", `Sect-Inst`)) |>
  filter(date >= as.Date("2017-04-01")) |>
  
  group_by(variable) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE  , color = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1999, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 200, 5)) +
  theme(legend.position = c(0.5, 0.8),
        legend.title = element_blank())+
  geom_label_repel(data = . %>%
               filter(date == max(date)), aes(date, y = OBS_VALUE, label = round(OBS_VALUE, 1),color = variable))

2019T4-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P4"),
         VALORISATION %in% c("V", "L"),
         NATURE == "VALEUR_ABSOLUE") %>%
  select_if(~ n_distinct(.) > 1) |>
  select(-IDBANK, -TITLE_EN) |>
  rowwise() |>
  mutate(date = TIME_PERIOD_to_date(TIME_PERIOD)) |>
  arrange(desc(date)) |>
  group_by(OPERATION, `SECT-INST`, date) |>
  summarise(OBS_VALUE = 100*OBS_VALUE[VALORISATION == "V"]/OBS_VALUE[VALORISATION == "L"]) |>
  ungroup() |>
  left_join(OPERATION, by = "OPERATION") |>
  left_join(`SECT-INST`, by = "SECT-INST") |>
  mutate(variable = paste0(OPERATION, " - ", `Sect-Inst`)) |>
  filter(date >= as.Date("2019-10-01")) |>
  
  group_by(variable) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE  , color = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1999, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 200, 5)) +
  theme(legend.position = c(0.5, 0.8),
        legend.title = element_blank())+
  geom_label_repel(data = . %>%
               filter(date == max(date)), aes(date, y = OBS_VALUE, label = round(OBS_VALUE, 1),color = variable))

2020-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P4"),
         VALORISATION %in% c("V", "L"),
         NATURE == "VALEUR_ABSOLUE") %>%
  select_if(~ n_distinct(.) > 1) |>
  select(-IDBANK, -TITLE_EN) |>
  rowwise() |>
  mutate(date = TIME_PERIOD_to_date(TIME_PERIOD)) |>
  arrange(desc(date)) |>
  group_by(OPERATION, `SECT-INST`, date) |>
  summarise(deflator = 100*OBS_VALUE[VALORISATION == "V"]/OBS_VALUE[VALORISATION == "L"]) |>
  ungroup() |>
  left_join(OPERATION, by = "OPERATION") |>
  left_join(`SECT-INST`, by = "SECT-INST") |>
  filter(date >= as.Date("2020-01-01")) |>
  mutate(variable = paste0(OPERATION, " - ", `Sect-Inst`)) |>
  ggplot() + geom_line(aes(x = date, y = deflator, color = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10() +
  theme(legend.position = c(0.5, 0.8),
        legend.title = element_blank())

2021-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P4"),
         VALORISATION %in% c("V", "L"),
         NATURE == "VALEUR_ABSOLUE") %>%
  select_if(~ n_distinct(.) > 1) |>
  select(-IDBANK, -TITLE_EN) |>
  rowwise() |>
  mutate(date = TIME_PERIOD_to_date(TIME_PERIOD)) |>
  arrange(desc(date)) |>
  group_by(OPERATION, `SECT-INST`, date) |>
  summarise(deflator = 100*OBS_VALUE[VALORISATION == "V"]/OBS_VALUE[VALORISATION == "L"]) |>
  ungroup() |>
  left_join(OPERATION, by = "OPERATION") |>
  left_join(`SECT-INST`, by = "SECT-INST") |>
  filter(date >= as.Date("2021-01-01")) |>
  mutate(variable = paste0(OPERATION, " - ", `Sect-Inst`)) |>
  group_by(OPERATION, `SECT-INST`) |>
  mutate(deflator = 100*deflator/deflator[1]) |>
  ggplot() + geom_line(aes(x = date, y = deflator, color = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10() +
  theme(legend.position = c(0.5, 0.8),
        legend.title = element_blank())

Agrégats

consommation nominale

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P3", "PIB")) |>
  quarter_to_date() |>
  filter(date >= as.Date("2021-10-01")) |>
  group_by(OPERATION, `SECT-INST`) |>
  arrange(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[1]) |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.4),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 5),
                     labels = percent_format(accuracy = 1))

Consommation: P4, P3

All

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P4", "P3", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.4),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 5),
                     labels = percent_format(accuracy = 1))

1980-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P4", "P3", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  filter(date >= as.Date("1980-01-01")) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.4),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 5),
                     labels = percent_format(accuracy = 1))

1995-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P4", "P3", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  filter(date >= as.Date("1995-01-01")) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.4),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 5),
                     labels = percent_format(accuracy = 1))

2000-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P4", "P3", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  filter(date >= as.Date("2000-01-01")) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.4),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 5),
                     labels = percent_format(accuracy = 1))

All

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P31", "P32", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 1),
                     labels = percent_format(accuracy = 1))

1980-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P31", "P32", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  filter(date >= as.Date("1980-01-01")) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 1),
                     labels = percent_format(accuracy = 1))

1995-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P31", "P32", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  filter(date >= as.Date("1995-01-01")) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 1),
                     labels = percent_format(accuracy = 1))

Exports, Imports

All

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P6", "P7", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 2),
                     labels = percent_format(accuracy = 1))

1980-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P6", "P7", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  filter(date >= as.Date("1980-01-01")) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 2),
                     labels = percent_format(accuracy = 1))

1995-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P6", "P7", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  filter(date >= as.Date("1995-01-01")) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 2),
                     labels = percent_format(accuracy = 1))

Solde Extérieur

All

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("SOLDE", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  na.omit() |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 1),
                     labels = percent_format(accuracy = 1))

1980-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("SOLDE", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  na.omit() |>
  filter(date >= as.Date("1980-01-01")) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 1),
                     labels = percent_format(accuracy = 1))

1995-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("SOLDE", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  na.omit() |>
  filter(date >= as.Date("1995-01-01")) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 1),
                     labels = percent_format(accuracy = 1))

Investissement

All

Tous

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P51", "P51B", "P51G", "P51M", "P51P", "P51S", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = paste(OPERATION, "-", TITLE_FR))) +
  #
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.78),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 2),
                     labels = percent_format(accuracy = 1))

Tous sauf un

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P51B", "P51G", "P51M", "P51P", "P51S", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = paste(OPERATION, "-", TITLE_FR))) +
  #
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.78),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 2),
                     labels = percent_format(accuracy = 1))

1980-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P51", "P51B", "P51G", "P51M", "P51P", "P51S", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  filter(date >= as.Date("1980-01-01")) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  #
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 2),
                     labels = percent_format(accuracy = 1))

1995-

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(FREQ == "T",
         VALORISATION == "V",
         OPERATION %in% c("P51", "P51B", "P51G", "P51M", "P51P", "P51S", "PIB")) |>
  quarter_to_date() |>
  group_by(date) |>
  mutate(OBS_VALUE = OBS_VALUE/OBS_VALUE[OPERATION == "PIB"]) |>
  filter(OPERATION != "PIB") |>
  mutate(TITLE_FR = gsub("- Valeur aux prix courants - Série CVS-CJO", "", TITLE_FR)) |>
  filter(date >= as.Date("1995-01-01")) |>
  ggplot() + ylab("% du PIB") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR)) +
  #
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 2),
                     labels = percent_format(accuracy = 1))

GDP Updates

gdp_quarterly2

Code
gdp_quarterly <- `CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION == "PIB",
         FREQ == "T",
         VALORISATION == "V") |>
  quarter_to_date() |>
  arrange(date) |>
  mutate(date = date + months(3) - days(1)) |>
  select(date, gdp = OBS_VALUE) |>
  mutate(gdp = gdp/1000)

save(gdp_quarterly, file = "gdp_quarterly2.RData")

gdp_quarterly |>
  tail(5) |>
  print_table_conditional()
date gdp
2025-06-30 745.214
2025-09-30 750.755
2025-12-31 755.823
2026-03-31 756.905
2026-06-30 760.179

gdp_quarterly3

Code
gdp_quarterly <- `CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION == "PIB",
         FREQ == "T",
         VALORISATION == "V") |>
  quarter_to_date() |>
  arrange(date) |>
  select(date, gdp = OBS_VALUE) |>
  mutate(gdp = gdp/1000)

save(gdp_quarterly, file = "gdp_quarterly3.RData")

gdp_quarterly |>
  tail(5) |>
  print_table_conditional()
date gdp
2025-04-01 745.214
2025-07-01 750.755
2025-10-01 755.823
2026-01-01 756.905
2026-04-01 760.179

gdp_quarterly4: IDBANK 010565707

Code
gdp_quarterly <- `CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION == "PIB",
         FREQ == "T",
         VALORISATION == "V") |>
  quarter_to_date() |>
  arrange(date) |>
  select(date, gdp = OBS_VALUE)

save(gdp_quarterly, file = "gdp_quarterly4.RData")

gdp_quarterly |>
  tail(5) |>
  print_table_conditional()
date gdp
2025-04-01 745214
2025-07-01 750755
2025-10-01 755823
2026-01-01 756905
2026-04-01 760179

Depuis le Covid-19

PIB valeur

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P31", "P32", "P4"),
         FREQ == "T",
         VALORISATION == "V",
         NATURE == "VALEUR_ABSOLUE",
         `SECT-INST` == "SO") |>
  
  mutate(date = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(date >= zoo::as.yearqtr("2019 Q4")) %>%
  select_if(~ n_distinct(.) > 1) |>
  arrange(date) |>
  group_by(OPERATION) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == zoo::as.yearqtr("2019 Q4")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = OPERATION)) +
  xlab("") + ylab("") +  theme_minimal() +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2017:2100, c(2, 4)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 200, 5)) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

PIB volume

2019-Q4

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P31", "P32", "P4"),
         FREQ == "T",
         VALORISATION == "L",
         NATURE == "VALEUR_ABSOLUE",
         `SECT-INST` == "SO") |>
  
  mutate(date = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(date >= zoo::as.yearqtr("2019 Q4")) %>%
  select_if(~ n_distinct(.) > 1) |>
  arrange(date) |>
  group_by(OPERATION) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == zoo::as.yearqtr("2019 Q4")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = OPERATION)) +
  xlab("") + ylab("") +  theme_minimal() +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2017:2100, c(2, 4)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 200, 5)) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Demande, Demande hors stocks

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "DINTF", "DINTFHS"),
         FREQ == "T",
         VALORISATION == "L",
         NATURE == "VALEUR_ABSOLUE",
         `SECT-INST` == "SO") |>
  
  mutate(date = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(date >= zoo::as.yearqtr("2019 Q4")) %>%
  select_if(~ n_distinct(.) > 1) |>
  arrange(date) |>
  group_by(OPERATION) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == zoo::as.yearqtr("2019 Q4")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = OPERATION)) +
  xlab("") + ylab("") +  theme_minimal() +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2017:2100, c(2, 4)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 200, 5)) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

2017-Q2 -

PIB valeur

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P31", "P32", "P4"),
         FREQ == "T",
         VALORISATION == "V",
         NATURE == "VALEUR_ABSOLUE",
         `SECT-INST` == "SO") |>
  
  mutate(date = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(date >= zoo::as.yearqtr("2017 Q2")) %>%
  select_if(~ n_distinct(.) > 1) |>
  arrange(date) |>
  group_by(OPERATION) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == zoo::as.yearqtr("2017 Q2")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = OPERATION)) +
  xlab("") + ylab("") +  theme_minimal() +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2017:2100, c(2, 4)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 200, 5)) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

PIB volume

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P31", "P32", "P4"),
         FREQ == "T",
         VALORISATION == "L",
         NATURE == "VALEUR_ABSOLUE",
         `SECT-INST` == "SO") |>
  
  mutate(date = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(date >= zoo::as.yearqtr("2017 Q2")) %>%
  select_if(~ n_distinct(.) > 1) |>
  arrange(date) |>
  group_by(OPERATION) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == zoo::as.yearqtr("2017 Q2")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = OPERATION)) +
  xlab("") + ylab("") +  theme_minimal() +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2017:2100, c(2, 4)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 200, 5)) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Demande, Demande hors stocks

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "DINTF", "DINTFHS"),
         FREQ == "T",
         VALORISATION == "L",
         NATURE == "VALEUR_ABSOLUE",
         `SECT-INST` == "SO") |>
  
  mutate(date = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(date >= zoo::as.yearqtr("2017 Q2")) %>%
  select_if(~ n_distinct(.) > 1) |>
  arrange(date) |>
  group_by(OPERATION) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == zoo::as.yearqtr("2017 Q2")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = OPERATION)) +
  xlab("") + ylab("") +  theme_minimal() +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2017:2100, c(2, 4)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 200, 2)) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

2011-Q1

PIB valeur

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P31", "P32", "P4"),
         FREQ == "T",
         VALORISATION == "V",
         NATURE == "VALEUR_ABSOLUE",
         `SECT-INST` == "SO") |>
  
  mutate(date = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(date >= zoo::as.yearqtr("2011 Q1")) %>%
  select_if(~ n_distinct(.) > 1) |>
  arrange(date) |>
  group_by(OPERATION) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == zoo::as.yearqtr("2011 Q1")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = OPERATION)) +
  xlab("") + ylab("") +  theme_minimal() +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2011:2100, c(2, 4)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = c(seq(0, 170, 5), 106, 107, 111, 112, 113)) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

PIB volume

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P31", "P32", "P4"),
         FREQ == "T",
         VALORISATION == "L",
         NATURE == "VALEUR_ABSOLUE",
         `SECT-INST` == "SO") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2010-01-01")) %>%
  select_if(~ n_distinct(.) > 1) |>
  arrange(date) |>
  group_by(OPERATION) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2010-01-01")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = OPERATION)) +
  xlab("") + ylab("") +  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 180, 5), 106, 107)) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank())

2010-2014

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P31", "P32", "P4"),
         FREQ == "T",
         VALORISATION == "L",
         NATURE == "VALEUR_ABSOLUE",
         `SECT-INST` == "SO") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2010-01-01")) |>
  filter(date <= as.Date("2014-01-01")) %>%
  select_if(~ n_distinct(.) > 1) |>
  arrange(date) |>
  group_by(OPERATION) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2010-01-01")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = OPERATION)) +
  xlab("") + ylab("") +  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(100, 180, 1), 106, 107)) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank())

2011-2014

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P31", "P32", "P4"),
         FREQ == "T",
         VALORISATION == "L",
         NATURE == "VALEUR_ABSOLUE",
         `SECT-INST` == "SO") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2011-01-01")) |>
  filter(date <= as.Date("2014-01-01")) %>%
  select_if(~ n_distinct(.) > 1) |>
  arrange(date) |>
  group_by(OPERATION) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2011-01-01")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = OPERATION)) +
  xlab("") + ylab("") +  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(100, 180, 1), 106, 107)) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank())

2011-14

PIB valeur

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P31", "P32", "P4"),
         FREQ == "T",
         VALORISATION == "V",
         NATURE == "VALEUR_ABSOLUE",
         `SECT-INST` == "SO") |>
  
  quarter_to_date() |>
  filter(date >= as.Date("2011-01-01"),
         date <= as.Date("2014-01-01")) %>%
  select_if(~ n_distinct(.) > 1) |>
  arrange(date) |>
  group_by(OPERATION) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2011-01-01")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = OPERATION)) +
  xlab("") + ylab("") +  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 170, 1), 106, 107, 111, 112, 113)) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank())

PIB volume

Code
`CNT-2020-PIB-EQB-RF` |>
  filter(OPERATION %in% c("PIB", "P3", "P31", "P32", "P4"),
         FREQ == "T",
         VALORISATION == "L",
         NATURE == "VALEUR_ABSOLUE",
         `SECT-INST` == "SO") |>
  
  mutate(date = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(date >= zoo::as.yearqtr("2011 Q1"),
         date <= zoo::as.yearqtr("2014 Q1")) %>%
  select_if(~ n_distinct(.) > 1) |>
  arrange(date) |>
  group_by(OPERATION) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == zoo::as.yearqtr("2011 Q1")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = OPERATION)) +
  xlab("") + ylab("") +  theme_minimal() +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2011:2100, c(1, 2, 3, 4)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = c(seq(0, 170, 1), 106, 107, 111, 112, 113)) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))