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

Données - INSEE

Last observation: Q2 2026 (N = 14)

First observation: Q1 1949 (N = 14)

Last data update: 03 sept. 2026, 05:31

Last compile: 04 sept. 2026, 02:29

Bibliographie en lien

Français

« Mesurer “le” pouvoir d’achat », F. Geerolf, 9 juillet 2024. [ 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. [ html] [ pdf] [ handouts] [ slides] [ slides] [ github]

« Inflation en France : IPC ou IPCH ? », F. Geerolf, 9 juillet 2024. [ 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 310
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 310
B2_S14A Revenu mixte 310
B2_S14B Excédent brut d'exploitation des ménages purs 310
B6 Revenu disponible brut 310
B7 Revenu disponible brut ajusté 310
D11 Salaires et traitements bruts 310
D4 Intérêts et dividendes nets reçus 310
D5 Impôts sur le revenu et le patrimoine 310
D5 + D613 + D614 + D61SC NA 310
D613 + D614 + D61SC NA 310
D62 Prestations sociales en espèces 310
D63 Transferts sociaux en nature 310
D7 Autres ressources nettes 310

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 2026-04-01 % change change (Mds€)
D4 Intérêts et dividendes nets reçus 20.696 36.500 76.36 15.80
B6 Revenu disponible brut 346.287 475.835 37.41 129.55
B7 Revenu disponible brut ajusté 448.073 613.101 36.83 165.03
B2 + D11 + D4 + D62 + D7 Total des ressources 438.928 594.484 35.44 155.56
B2_S14B Excédent brut d'exploitation des ménages purs 50.831 68.826 35.40 17.99
D63 Transferts sociaux en nature 101.786 137.266 34.86 35.48
D11 Salaires et traitements bruts 219.522 292.770 33.37 73.25
D62 Prestations sociales en espèces 123.851 164.511 32.83 40.66
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 77.716 102.567 31.98 24.85
D5 Impôts sur le revenu et le patrimoine 56.201 73.160 30.18 16.96
D5 + D613 + D614 + D61SC NA 92.641 118.649 28.07 26.01
B2_S14A Revenu mixte 26.885 33.742 25.50 6.86
D613 + D614 + D61SC NA 36.440 45.489 24.83 9.05
D7 Autres ressources nettes -2.857 -1.864 -34.76 0.99

€ 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 2026-04-01 % change change (Mds€)
B7 Revenu disponible brut ajusté 448.073 613.101 36.83 165.03
B2 + D11 + D4 + D62 + D7 Total des ressources 438.928 594.484 35.44 155.56
B6 Revenu disponible brut 346.287 475.835 37.41 129.55
D11 Salaires et traitements bruts 219.522 292.770 33.37 73.25
D62 Prestations sociales en espèces 123.851 164.511 32.83 40.66
D63 Transferts sociaux en nature 101.786 137.266 34.86 35.48
D5 + D613 + D614 + D61SC NA 92.641 118.649 28.07 26.01
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 77.716 102.567 31.98 24.85
B2_S14B Excédent brut d'exploitation des ménages purs 50.831 68.826 35.40 17.99
D5 Impôts sur le revenu et le patrimoine 56.201 73.160 30.18 16.96
D4 Intérêts et dividendes nets reçus 20.696 36.500 76.36 15.80
D613 + D614 + D61SC NA 36.440 45.489 24.83 9.05
B2_S14A Revenu mixte 26.885 33.742 25.50 6.86
D7 Autres ressources nettes -2.857 -1.864 -34.76 0.99

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")
Source Dataset Updated PNG PDF
insee IPCH-IPC-2015-ensemble 02 août 2026 png pdf

SMPT, rappel:

Code
ig_d("insee", "t_salaire_val", "TOTAL-AZ-C-2017T2")
Source Dataset Updated PNG PDF
insee t_salaire_val 03 sept. 2026 png pdf

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 2023-04-01 2026-04-01 % change change (Mds€)
D4 Intérêts et dividendes nets reçus 31.966 36.500 14.18 4.53
D613 + D614 + D61SC NA 40.076 45.489 13.51 5.41
D62 Prestations sociales en espèces 147.325 164.511 11.67 17.19
D63 Transferts sociaux en nature 125.263 137.266 9.58 12.00
D5 + D613 + D614 + D61SC NA 108.518 118.649 9.34 10.13
B7 Revenu disponible brut ajusté 566.638 613.101 8.20 46.46
B2 + D11 + D4 + D62 + D7 Total des ressources 549.893 594.484 8.11 44.59
B6 Revenu disponible brut 441.375 475.835 7.81 34.46
D11 Salaires et traitements bruts 273.749 292.770 6.95 19.02
D5 Impôts sur le revenu et le patrimoine 68.443 73.160 6.89 4.72
B2_S14A Revenu mixte 32.353 33.742 4.29 1.39
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 99.494 102.567 3.09 3.07
B2_S14B Excédent brut d'exploitation des ménages purs 67.141 68.826 2.51 1.68
D7 Autres ressources nettes -2.641 -1.864 -29.42 0.78

€ 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 2023-04-01 2026-04-01 % change change (Mds€)
B7 Revenu disponible brut ajusté 566.638 613.101 8.20 46.46
B2 + D11 + D4 + D62 + D7 Total des ressources 549.893 594.484 8.11 44.59
B6 Revenu disponible brut 441.375 475.835 7.81 34.46
D11 Salaires et traitements bruts 273.749 292.770 6.95 19.02
D62 Prestations sociales en espèces 147.325 164.511 11.67 17.19
D63 Transferts sociaux en nature 125.263 137.266 9.58 12.00
D5 + D613 + D614 + D61SC NA 108.518 118.649 9.34 10.13
D613 + D614 + D61SC NA 40.076 45.489 13.51 5.41
D5 Impôts sur le revenu et le patrimoine 68.443 73.160 6.89 4.72
D4 Intérêts et dividendes nets reçus 31.966 36.500 14.18 4.53
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 99.494 102.567 3.09 3.07
B2_S14B Excédent brut d'exploitation des ménages purs 67.141 68.826 2.51 1.68
B2_S14A Revenu mixte 32.353 33.742 4.29 1.39
D7 Autres ressources nettes -2.641 -1.864 -29.42 0.78

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 2024-04-01 2026-04-01 % change change (Mds€)
D7 Autres ressources nettes -1.679 -1.864 11.02 -0.19
D613 + D614 + D61SC NA 41.434 45.489 9.79 4.06
D5 + D613 + D614 + D61SC NA 112.401 118.649 5.56 6.25
D62 Prestations sociales en espèces 156.481 164.511 5.13 8.03
D63 Transferts sociaux en nature 130.605 137.266 5.10 6.66
B2_S14A Revenu mixte 32.516 33.742 3.77 1.23
D11 Salaires et traitements bruts 283.694 292.770 3.20 9.08
D5 Impôts sur le revenu et le patrimoine 70.966 73.160 3.09 2.19
B2 + D11 + D4 + D62 + D7 Total des ressources 577.305 594.484 2.98 17.18
B7 Revenu disponible brut ajusté 595.509 613.101 2.95 17.59
B6 Revenu disponible brut 464.904 475.835 2.35 10.93
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 100.784 102.567 1.77 1.78
B2_S14B Excédent brut d'exploitation des ménages purs 68.268 68.826 0.82 0.56
D4 Intérêts et dividendes nets reçus 38.026 36.500 -4.01 -1.53

€ 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 2024-04-01 2026-04-01 % change change (Mds€)
B7 Revenu disponible brut ajusté 595.509 613.101 2.95 17.59
B2 + D11 + D4 + D62 + D7 Total des ressources 577.305 594.484 2.98 17.18
B6 Revenu disponible brut 464.904 475.835 2.35 10.93
D11 Salaires et traitements bruts 283.694 292.770 3.20 9.08
D62 Prestations sociales en espèces 156.481 164.511 5.13 8.03
D63 Transferts sociaux en nature 130.605 137.266 5.10 6.66
D5 + D613 + D614 + D61SC NA 112.401 118.649 5.56 6.25
D613 + D614 + D61SC NA 41.434 45.489 9.79 4.06
D5 Impôts sur le revenu et le patrimoine 70.966 73.160 3.09 2.19
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 100.784 102.567 1.77 1.78
B2_S14A Revenu mixte 32.516 33.742 3.77 1.23
B2_S14B Excédent brut d'exploitation des ménages purs 68.268 68.826 0.82 0.56
D7 Autres ressources nettes -1.679 -1.864 11.02 -0.19
D4 Intérêts et dividendes nets reçus 38.026 36.500 -4.01 -1.53

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 2025-04-01 2026-04-01 % change change (Mds€)
D613 + D614 + D61SC NA 42.633 45.489 6.70 2.86
D4 Intérêts et dividendes nets reçus 34.944 36.500 4.45 1.56
D5 + D613 + D614 + D61SC NA 114.973 118.649 3.20 3.68
B2_S14B Excédent brut d'exploitation des ménages purs 67.003 68.826 2.72 1.82
D63 Transferts sociaux en nature 133.868 137.266 2.54 3.40
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 100.397 102.567 2.16 2.17
D62 Prestations sociales en espèces 161.466 164.511 1.89 3.04
B2 + D11 + D4 + D62 + D7 Total des ressources 583.995 594.484 1.80 10.49
B7 Revenu disponible brut ajusté 602.890 613.101 1.69 10.21
B6 Revenu disponible brut 469.022 475.835 1.45 6.81
D7 Autres ressources nettes -1.840 -1.864 1.30 -0.02
D11 Salaires et traitements bruts 289.028 292.770 1.29 3.74
D5 Impôts sur le revenu et le patrimoine 72.340 73.160 1.13 0.82
B2_S14A Revenu mixte 33.395 33.742 1.04 0.35

€ 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 2025-04-01 2026-04-01 % change change (Mds€)
B2 + D11 + D4 + D62 + D7 Total des ressources 583.995 594.484 1.80 10.49
B7 Revenu disponible brut ajusté 602.890 613.101 1.69 10.21
B6 Revenu disponible brut 469.022 475.835 1.45 6.81
D11 Salaires et traitements bruts 289.028 292.770 1.29 3.74
D5 + D613 + D614 + D61SC NA 114.973 118.649 3.20 3.68
D63 Transferts sociaux en nature 133.868 137.266 2.54 3.40
D62 Prestations sociales en espèces 161.466 164.511 1.89 3.04
D613 + D614 + D61SC NA 42.633 45.489 6.70 2.86
B2_S14 Excédent brut d'exploitation (y compris revenu mixte) 100.397 102.567 2.16 2.17
B2_S14B Excédent brut d'exploitation des ménages purs 67.003 68.826 2.72 1.82
D4 Intérêts et dividendes nets reçus 34.944 36.500 4.45 1.56
D5 Impôts sur le revenu et le patrimoine 72.340 73.160 1.13 0.82
B2_S14A Revenu mixte 33.395 33.742 1.04 0.35
D7 Autres ressources nettes -1.840 -1.864 1.30 -0.02

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())