Revenu, pouvoir d’achat et comptes des ménages - Valeurs aux prix courants

Data - INSEE

Info

source dataset Title .html .rData
insee t_men_val Revenu, pouvoir d'achat et comptes des ménages - Valeurs aux prix courants 2026-03-12 2026-02-27

Données sur le pouvoir d’achat

source dataset Title .html .rData
insee CNA-2014-RDB Revenu et pouvoir d’achat des ménages 2026-03-12 2026-03-11
insee CNT-2014-CSI Comptes de secteurs institutionnels 2026-03-12 2026-03-11
insee T_2101 2.101 – Revenu disponible brut des ménages et évolution du pouvoir d'achat par personne, par ménage et par unité de consommation (En milliards euros et %) 2026-03-12 2025-12-14
insee T_7401 7.401 – Compte des ménages (S14) (En milliards d'euros) 2026-03-12 2025-12-14
insee conso-eff-fonction Consommation effective des ménages par fonction 2026-03-12 2022-06-14
insee econ-gen-revenu-dispo-pouv-achat-2 Revenu disponible brut et pouvoir d’achat - Données annuelles 2026-03-12 2026-01-11
insee reve-conso-evo-dep-pa Évolution de la dépense et du pouvoir d’achat des ménages - Données annuelles de 1960 à 2023 2026-03-12 2024-12-11
insee reve-niv-vie-individu-activite Niveau de vie selon l'activité - Données annuelles 2026-03-12 2025-12-22
insee reve-niv-vie-pouv-achat-trim Évolution du revenu disponible brut et du pouvoir d’achat - Données trimestrielles 2026-03-12 2026-01-11
insee t_men_val Revenu, pouvoir d'achat et comptes des ménages - Valeurs aux prix courants 2026-03-12 2026-02-27
insee t_pouvachat_val Pouvoir d'achat et ratios des comptes des ménages 2026-03-12 2026-02-27
insee t_recapAgent_val Récapitulatif des séries des comptes d'agents 2026-03-12 2026-02-27
insee t_salaire_val Salaire moyen par tête - SMPT (données CVS) 2026-03-12 2026-02-27
oecd HH_DASH Household Dashboard 2026-03-12 2023-09-09

Données sur l’épargne

source dataset Title .html .rData
bdf CFT Comptes Financiers Trimestriels 2026-03-11 2025-03-09
insee T_7401 7.401 – Compte des ménages (S14) (En milliards d'euros) 2026-03-12 2025-12-14
insee bdf2017 Budget de famille 2017 2026-02-03 2023-11-21
insee ip1815 Plus d’épargne chez les plus aisés, plus de dépenses contraintes chez les plus modestes - ip1815 2026-03-12 2023-10-05
insee t_men_val Revenu, pouvoir d'achat et comptes des ménages - Valeurs aux prix courants 2026-03-12 2026-02-27
insee t_pouvachat_val Pouvoir d'achat et ratios des comptes des ménages 2026-03-12 2026-02-27
insee t_recapAgent_val Récapitulatif des séries des comptes d'agents 2026-03-12 2026-02-27

LAST_COMPILE

LAST_COMPILE
2026-03-14

Bibliographie en lien

Français

« Mesurer “le” pouvoir d’achat », F. Geerolf, 9 juillet 2024, hal-05505752. [ html] [ pdf] [ handouts] [ slides] [ slides] [ github]

« La taxe inflationniste, le pouvoir d’achat, le taux d’épargne et le déficit public », F. Geerolf, 9 juillet 2024, hal-05506068. [ html] [ pdf] [ handouts] [ slides] [ slides] [ github]

« Inflation en France : IPC ou IPCH ? », F. Geerolf, 9 juillet 2024, hal-05502577. [ html] [ pdf] [ handouts] [ slides] [ slides] [ github]

Exemple

  • 2023T2: consommation Totale = 356,6 Mds€; revenu disponible brut = 439,2 Mds€:
Code
scales::percent(1-356.6/439.2, acc = 0.01)
# [1] "18.81%"

Données

  • Comptes nationaux trimestriels au 3ème trimestre 2023. html / xls

  • Comptes nationaux trimestriels au 2ème trimestre 2023. html / xls

  • Comptes nationaux trimestriels au 4ème trimestre 2022. html / xls

  • Comptes nationaux trimestriels au 4ème trimestre 2021. html

Info

Revenu disponible brut. Il s’agit de la part du revenu qui reste à la disposition du ménage pour consommer et épargner, une fois déduits les prélèvements sociaux et les impôts.

Les ressources comprennent : - les revenus d’activité (salaires, revenus des entrepreneurs individuels…), - les revenus du patrimoine (dividendes, intérêts, loyers), - les prestations sociales (y compris les pensions de retraite et les indemnités de chômage), - les transferts courants (notamment les indemnités d’assurance nette des primes). Les charges comprennent notamment les impôts directs (impôt sur le revenu, taxe d’habitation, CSG…).

Revenu disponible brut ajusté. Il s’agit du RDB augmenté des transferts sociaux en nature, contrepartie des consommations individualisables incluses dans les dépenses des APU et des ISBLSM.

Excédent brut d’exploitation des ménages purs. L’EBE des ménages purs correspond aux revenus fonciers, issus des loyers réels ou des loyers imputés (au titre des services de logement que les ménages propriétaires se rendent à eux mêmes).

variable

Code
t_men_val %>%
  left_join(variable, by = "variable") %>%
  group_by(variable, Variable) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
variable Variable Nobs
B2 + D11 + D4 + D62 + D7 Total des ressources 308
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 308
B2_S14A Revenu mixte 308
B2_S14B Excédent brut d'exploitation des ménages purs 308
B6 Revenu disponible brut 308
B7 Revenu disponible brut ajusté 308
D11 Salaires et traitements bruts 308
D4 Intérêts et dividendes nets reçus 308
D5 Impôts sur le revenu et le patrimoine 308
D5 + D613 + D614 + D61SC NA 308
D613 + D614 + D61SC NA 308
D62 Prestations sociales en espèces 308
D63 Transferts sociaux en nature 308
D7 Autres ressources nettes 308

date

Code
t_men_val %>%
  group_by(date) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(date)) %>%
  print_table_conditional

Evolution

2017T2-

% change

Code
t_men_val %>%
  filter(date %in% c(max(date), as.Date("2017-04-01"))) %>%
  left_join(variable, by = "variable") %>%
  spread(date, value) %>%
  mutate(`% change` = round(100*(.[[4]]/.[[3]]-1), 2),
         `change (Mds€)` = round(.[[4]]-.[[3]], 2)) %>%
  arrange(-`% change`) %>%
  print_table_conditional(.)
variable Variable 2017-04-01 2025-10-01 % change change (Mds€)
D4 Intérêts et dividendes nets reçus 20.692 37.541 81.43 16.85
B6 Revenu disponible brut 346.183 471.367 36.16 125.18
B7 Revenu disponible brut ajusté 447.974 607.354 35.58 159.38
B2 + D11 + D4 + D62 + D7 Total des ressources 438.964 590.701 34.57 151.74
D63 Transferts sociaux en nature 101.791 135.987 33.59 34.20
D62 Prestations sociales en espèces 123.859 165.345 33.49 41.49
B2_S14B Excédent brut d'exploitation des ménages purs 50.860 67.802 33.31 16.94
D5 Impôts sur le revenu et le patrimoine 56.209 74.664 32.83 18.45
D11 Salaires et traitements bruts 219.529 288.733 31.52 69.20
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 77.741 101.564 30.64 23.82
D5 + D613 + D614 + D61SC NA 92.781 119.334 28.62 26.55
B2_S14A Revenu mixte 26.881 33.763 25.60 6.88
D613 + D614 + D61SC NA 36.572 44.671 22.15 8.10
D7 Autres ressources nettes -2.857 -2.481 -13.16 0.38

€ change

Code
t_men_val %>%
  filter(date %in% c(max(date), as.Date("2017-04-01"))) %>%
  left_join(variable, by = "variable") %>%
  spread(date, value) %>%
  mutate(`% change` = round(100*(.[[4]]/.[[3]]-1), 2),
         `change (Mds€)` = round(.[[4]]-.[[3]], 2)) %>%
  arrange(-`change (Mds€)`) %>%
  print_table_conditional(.)
variable Variable 2017-04-01 2025-10-01 % change change (Mds€)
B7 Revenu disponible brut ajusté 447.974 607.354 35.58 159.38
B2 + D11 + D4 + D62 + D7 Total des ressources 438.964 590.701 34.57 151.74
B6 Revenu disponible brut 346.183 471.367 36.16 125.18
D11 Salaires et traitements bruts 219.529 288.733 31.52 69.20
D62 Prestations sociales en espèces 123.859 165.345 33.49 41.49
D63 Transferts sociaux en nature 101.791 135.987 33.59 34.20
D5 + D613 + D614 + D61SC NA 92.781 119.334 28.62 26.55
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 77.741 101.564 30.64 23.82
D5 Impôts sur le revenu et le patrimoine 56.209 74.664 32.83 18.45
B2_S14B Excédent brut d'exploitation des ménages purs 50.860 67.802 33.31 16.94
D4 Intérêts et dividendes nets reçus 20.692 37.541 81.43 16.85
D613 + D614 + D61SC NA 36.572 44.671 22.15 8.10
B2_S14A Revenu mixte 26.881 33.763 25.60 6.88
D7 Autres ressources nettes -2.857 -2.481 -13.16 0.38

2017T2-

Code
t_men_val %>%
  filter(variable %in% c("D11", "B6", "D4")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2017-04-01")) %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = 100*value/value[1]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Index 100 = 2017T2") +
  scale_x_date(breaks = as.Date(paste0(seq(2008, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1500, 5)) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank())

Memo, inflation période. IPCH: +21.6%.

Code
ig_d("insee", "IPCH-IPC-2015-ensemble", "IPC-IPCH-trimestre-2017T2")

SMPT, rappel:

Code
ig_d("insee", "t_salaire_val", "TOTAL-AZ-C-2017T2")

2019T4-

Code
t_men_val %>%
  filter(variable %in% c("D11", "B6", "D4")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2019-10-01")) %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = 100*value/value[1]) %>%
  mutate(date = zoo::as.yearqtr(paste(year(date), quarter(date), sep = "-"))) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Index 100 = 2019T4") +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"), n = 24) +
  scale_y_log10(breaks = seq(0, 1500, 5)) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  geom_text(data = . %>% 
              filter(date == max(date)),
            aes(x = date, y = value, color = Variable, label = round(value, 1)))

2021T2-

Code
t_men_val %>%
  filter(variable %in% c("B6", "D4", "D11")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2021-04-01")) %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = 100*value/value[1]) %>%
  mutate(date = zoo::as.yearqtr(paste(year(date), quarter(date), sep = "-"))) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Indice 100 = 2021T2") +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"), n = 24) +
  scale_y_log10(breaks = seq(0, 1500, 5)) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  geom_text_repel(data = . %>% 
              filter(date == max(date)),
            aes(x = date, y = value,  color = Variable, label = round(value, 1)))

3 years

% change

Code
t_men_val %>%
  filter(date %in% c(max(date), max(date)-years(3))) %>%
  left_join(variable, by = "variable") %>%
  spread(date, value) %>%
  mutate(`% change` = round(100*(.[[4]]/.[[3]]-1), 2),
         `change (Mds€)` = round(.[[4]]-.[[3]], 2)) %>%
  arrange(-`% change`) %>%
  print_table_conditional(.)
variable Variable 2022-10-01 2025-10-01 % change change (Mds€)
D4 Intérêts et dividendes nets reçus 30.338 37.541 23.74 7.20
D613 + D614 + D61SC NA 39.168 44.671 14.05 5.50
D5 + D613 + D614 + D61SC NA 104.665 119.334 14.02 14.67
D5 Impôts sur le revenu et le patrimoine 65.497 74.664 14.00 9.17
D62 Prestations sociales en espèces 145.147 165.345 13.92 20.20
B2_S14B Excédent brut d'exploitation des ménages purs 60.888 67.802 11.36 6.91
B2 + D11 + D4 + D62 + D7 Total des ressources 532.770 590.701 10.87 57.93
B6 Revenu disponible brut 428.105 471.367 10.11 43.26
B7 Revenu disponible brut ajusté 551.843 607.354 10.06 55.51
D63 Transferts sociaux en nature 123.738 135.987 9.90 12.25
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 92.680 101.564 9.59 8.88
D11 Salaires et traitements bruts 267.933 288.733 7.76 20.80
B2_S14A Revenu mixte 31.792 33.763 6.20 1.97
D7 Autres ressources nettes -3.328 -2.481 -25.45 0.85

€ change

Code
t_men_val %>%
  filter(date %in% c(max(date), max(date)-years(3))) %>%
  left_join(variable, by = "variable") %>%
  spread(date, value) %>%
  mutate(`% change` = round(100*(.[[4]]/.[[3]]-1), 2),
         `change (Mds€)` = round(.[[4]]-.[[3]], 2)) %>%
  arrange(-`change (Mds€)`) %>%
  print_table_conditional(.)
variable Variable 2022-10-01 2025-10-01 % change change (Mds€)
B2 + D11 + D4 + D62 + D7 Total des ressources 532.770 590.701 10.87 57.93
B7 Revenu disponible brut ajusté 551.843 607.354 10.06 55.51
B6 Revenu disponible brut 428.105 471.367 10.11 43.26
D11 Salaires et traitements bruts 267.933 288.733 7.76 20.80
D62 Prestations sociales en espèces 145.147 165.345 13.92 20.20
D5 + D613 + D614 + D61SC NA 104.665 119.334 14.02 14.67
D63 Transferts sociaux en nature 123.738 135.987 9.90 12.25
D5 Impôts sur le revenu et le patrimoine 65.497 74.664 14.00 9.17
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 92.680 101.564 9.59 8.88
D4 Intérêts et dividendes nets reçus 30.338 37.541 23.74 7.20
B2_S14B Excédent brut d'exploitation des ménages purs 60.888 67.802 11.36 6.91
D613 + D614 + D61SC NA 39.168 44.671 14.05 5.50
B2_S14A Revenu mixte 31.792 33.763 6.20 1.97
D7 Autres ressources nettes -3.328 -2.481 -25.45 0.85

2 years

% change

Code
t_men_val %>%
  filter(date %in% c(max(date), max(date)-years(2))) %>%
  left_join(variable, by = "variable") %>%
  spread(date, value) %>%
  mutate(`% change` = round(100*(.[[4]]/.[[3]]-1), 2),
         `change (Mds€)` = round(.[[4]]-.[[3]], 2)) %>%
  arrange(-`% change`) %>%
  print_table_conditional(.)
variable Variable 2023-10-01 2025-10-01 % change change (Mds€)
D62 Prestations sociales en espèces 150.345 165.345 9.98 15.00
D613 + D614 + D61SC NA 40.849 44.671 9.36 3.82
D5 + D613 + D614 + D61SC NA 109.219 119.334 9.26 10.12
D5 Impôts sur le revenu et le patrimoine 68.370 74.664 9.21 6.29
D4 Intérêts et dividendes nets reçus 35.140 37.541 6.83 2.40
D63 Transferts sociaux en nature 129.388 135.987 5.10 6.60
B2 + D11 + D4 + D62 + D7 Total des ressources 563.384 590.701 4.85 27.32
B2_S14A Revenu mixte 32.335 33.763 4.42 1.43
B7 Revenu disponible brut ajusté 583.554 607.354 4.08 23.80
B6 Revenu disponible brut 454.165 471.367 3.79 17.20
D11 Salaires et traitements bruts 279.328 288.733 3.37 9.41
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 101.085 101.564 0.47 0.48
D7 Autres ressources nettes -2.514 -2.481 -1.31 0.03
B2_S14B Excédent brut d'exploitation des ménages purs 68.750 67.802 -1.38 -0.95

€ change

Code
t_men_val %>%
  filter(date %in% c(max(date), max(date)-years(2))) %>%
  left_join(variable, by = "variable") %>%
  spread(date, value) %>%
  mutate(`% change` = round(100*(.[[4]]/.[[3]]-1), 2),
         `change (Mds€)` = round(.[[4]]-.[[3]], 2)) %>%
  arrange(-`change (Mds€)`) %>%
  print_table_conditional(.)
variable Variable 2023-10-01 2025-10-01 % change change (Mds€)
B2 + D11 + D4 + D62 + D7 Total des ressources 563.384 590.701 4.85 27.32
B7 Revenu disponible brut ajusté 583.554 607.354 4.08 23.80
B6 Revenu disponible brut 454.165 471.367 3.79 17.20
D62 Prestations sociales en espèces 150.345 165.345 9.98 15.00
D5 + D613 + D614 + D61SC NA 109.219 119.334 9.26 10.12
D11 Salaires et traitements bruts 279.328 288.733 3.37 9.41
D63 Transferts sociaux en nature 129.388 135.987 5.10 6.60
D5 Impôts sur le revenu et le patrimoine 68.370 74.664 9.21 6.29
D613 + D614 + D61SC NA 40.849 44.671 9.36 3.82
D4 Intérêts et dividendes nets reçus 35.140 37.541 6.83 2.40
B2_S14A Revenu mixte 32.335 33.763 4.42 1.43
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 101.085 101.564 0.47 0.48
D7 Autres ressources nettes -2.514 -2.481 -1.31 0.03
B2_S14B Excédent brut d'exploitation des ménages purs 68.750 67.802 -1.38 -0.95

Last year

% change

Code
t_men_val %>%
  filter(date %in% c(max(date), max(date)-years(1))) %>%
  left_join(variable, by = "variable") %>%
  spread(date, value) %>%
  mutate(`% change` = round(100*(.[[4]]/.[[3]]-1), 2),
         `change (Mds€)` = round(.[[4]]-.[[3]], 2)) %>%
  arrange(-`% change`) %>%
  print_table_conditional(.)
variable Variable 2024-10-01 2025-10-01 % change change (Mds€)
D5 Impôts sur le revenu et le patrimoine 69.766 74.664 7.02 4.90
D5 + D613 + D614 + D61SC NA 112.883 119.334 5.71 6.45
D613 + D614 + D61SC NA 43.118 44.671 3.60 1.55
D62 Prestations sociales en espèces 160.137 165.345 3.25 5.21
D63 Transferts sociaux en nature 132.447 135.987 2.67 3.54
B2_S14A Revenu mixte 32.902 33.763 2.62 0.86
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 99.721 101.564 1.85 1.84
B2 + D11 + D4 + D62 + D7 Total des ressources 580.591 590.701 1.74 10.11
B2_S14B Excédent brut d'exploitation des ménages purs 66.818 67.802 1.47 0.98
B7 Revenu disponible brut ajusté 600.154 607.354 1.20 7.20
D11 Salaires et traitements bruts 285.740 288.733 1.05 2.99
B6 Revenu disponible brut 467.707 471.367 0.78 3.66
D4 Intérêts et dividendes nets reçus 37.502 37.541 0.10 0.04
D7 Autres ressources nettes -2.509 -2.481 -1.12 0.03

€ change

Code
t_men_val %>%
  filter(date %in% c(max(date), max(date)-years(1))) %>%
  left_join(variable, by = "variable") %>%
  spread(date, value) %>%
  mutate(`% change` = round(100*(.[[4]]/.[[3]]-1), 2),
         `change (Mds€)` = round(.[[4]]-.[[3]], 2)) %>%
  arrange(-`change (Mds€)`) %>%
  print_table_conditional(.)
variable Variable 2024-10-01 2025-10-01 % change change (Mds€)
B2 + D11 + D4 + D62 + D7 Total des ressources 580.591 590.701 1.74 10.11
B7 Revenu disponible brut ajusté 600.154 607.354 1.20 7.20
D5 + D613 + D614 + D61SC NA 112.883 119.334 5.71 6.45
D62 Prestations sociales en espèces 160.137 165.345 3.25 5.21
D5 Impôts sur le revenu et le patrimoine 69.766 74.664 7.02 4.90
B6 Revenu disponible brut 467.707 471.367 0.78 3.66
D63 Transferts sociaux en nature 132.447 135.987 2.67 3.54
D11 Salaires et traitements bruts 285.740 288.733 1.05 2.99
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 99.721 101.564 1.85 1.84
D613 + D614 + D61SC NA 43.118 44.671 3.60 1.55
B2_S14B Excédent brut d'exploitation des ménages purs 66.818 67.802 1.47 0.98
B2_S14A Revenu mixte 32.902 33.763 2.62 0.86
D4 Intérêts et dividendes nets reçus 37.502 37.541 0.10 0.04
D7 Autres ressources nettes -2.509 -2.481 -1.12 0.03

Evolution RDB, RDB sans capital

1990-

Code
t_men_val %>%
  filter(variable %in% c("B6", "B2_S14B", "D4")) %>%
  spread(variable, value) %>%
  transmute(date, RDB = B6, `RDB - intérêts et dividendes` = B6-D4, `RDB - intérêts et dividendes - EBE` = B6-D4-B2_S14B) %>%
  gather(Variable, value, -date) %>%
  group_by(Variable) %>%
  arrange(date) %>%
  mutate(ga = value/lag(value, 4) - 1) %>%
  filter(date >= as.Date("1990-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = ga, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")

D11, B6

Montant

All

Linear

Code
t_men_val %>%
  filter(variable %in% c("D11", "B6")) %>%
  left_join(variable, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10000, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Log

Code
t_men_val %>%
  filter(variable %in% c("D11", "B6")) %>%
  left_join(variable, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(1,2,5,8,10,20, 50, 80, 100, 200, 500, 1000, 1200, 2000, 3000, 5000, 10000),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

1995-

Linear

Code
t_men_val %>%
  filter(variable %in% c("D11", "B6")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("1995-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10000, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Log

Code
t_men_val %>%
  filter(variable %in% c("D11", "B6")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("1995-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1500, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

1999-

Linear

Code
t_men_val %>%
  filter(variable %in% c("D11", "B6")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("1999-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10000, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Log

Values
Code
t_men_val %>%
  filter(variable %in% c("D11", "B6")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("1999-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1500, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Base 100
Code
t_men_val %>%
  filter(variable %in% c("D11", "B6")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("1999-01-01")) %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = 100*value/value[1]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Base 100 = 1999") +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1500, 10)) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

2001-2021

Et par personne ?

Code
t_men_val %>%
  filter(variable %in% c("D11", "B6")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2001-01-01"),
         date <= as.Date("2021-01-01")) %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = 100*value/value[1]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Base 100 = 2001-T1") +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1500, 10)) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank()) +
  geom_label_repel(data = . %>% filter(max(date) == date),
                   aes(x = date, y = value, color = Variable, label = round(value, 1)), show.legend = F)

2001-2021

Code
t_men_val %>%
  filter(variable %in% c("D11", "B6")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2001-01-01")) %>%
  group_by(variable) %>%
  arrange(date) %>%
  mutate(value = 100*value/value[1]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Base 100 = 2001-T1") +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1500, 10)) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

2008-

Linear

Code
t_men_val %>%
  filter(variable %in% c("D11", "B6")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2008-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(2008, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10000, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Log

Code
t_men_val %>%
  filter(variable %in% c("D11", "B6")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2008-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(2008, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1500, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

2017-

Linear

Code
t_men_val %>%
  filter(variable %in% c("D11", "B6")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2017-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(2008, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10000, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Log

Code
t_men_val %>%
  filter(variable %in% c("D11", "B6")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2017-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(2008, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1500, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Revenus du capital

Montant

All

Linear

Code
t_men_val %>%
  filter(variable %in% c("B2_S14", "B2_S14B", "D4")) %>%
  left_join(variable, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10000, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Log

Code
t_men_val %>%
  filter(variable %in% c("B2_S14", "B2_S14B", "D4")) %>%
  left_join(variable, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(1,2,5,8,10,20, 50, 80, 100, 200, 500, 1000, 1200, 2000, 3000, 5000, 10000),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

1995-

Linear

Code
t_men_val %>%
  filter(variable %in% c("B2_S14", "B2_S14B", "D4")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("1995-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10000, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Log

Code
t_men_val %>%
  filter(variable %in% c("B2_S14", "B2_S14B", "D4")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("1995-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1500, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

2008-

Linear

Code
t_men_val %>%
  filter(variable %in% c("B2_S14", "B2_S14B", "D4")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2008-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10000, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Log

Code
t_men_val %>%
  filter(variable %in% c("B2_S14", "B2_S14B", "D4")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2008-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1500, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

2017-

Linear

Code
t_men_val %>%
  filter(variable %in% c("B2_S14", "B2_S14B", "D4")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2017-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10000, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Log

Code
t_men_val %>%
  filter(variable %in% c("B2_S14", "B2_S14B", "D4")) %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2017-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Milliards d'€") +
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1500, 10),
                     labels = dollar_format(accuracy = 1, pre = "", su ="Mds€")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())