Budget de l’État
Données - INSEE
Info
Last observation: Mensuelle: 2026-06 (N = 4)
First observation: Mensuelle: 2009-01 (N = 4)
Number of observations: 840
Last data update: 14 aoû 2026, 20:49. Last compile: 15 aoû 2026, 03:22
Structure
Publications
Code
tibble(date = "2023-07-31", key = "20942") |>
add_row(date = "2023-08-31", key = "21072") |>
add_row(date = "2023-06-30", key = "21005") |>
mutate(pdf = paste0('<a target=_blank href=https://www.budget.gouv.fr/documentation/file-download/', key, ' > pdf </a>')) |>
select(-key) |>
arrange(desc(date)) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}- Situation mensuelle sur le budget de l’Etat. html /31 mai 2023 https://www.budget.gouv.fr/documentation/file-download/21005
https://www.budget.gouv.fr/documentation/file-download/21005
https://www.budget.gouv.fr/documentation/file-download/21072
Solde général d’exécution
Tous
Euros courants
Code
n_year <- year(Sys.Date()) - 2009
Sys.setlocale("LC_TIME", "fr_CA.UTF-8")# [1] "fr_CA.UTF-8"
Code
`COMPTES-ETAT` |>
filter(INDICATEUR %in% c("SGE")) |>
month_to_date() |>
mutate(date_year = ymd(paste(last_year, month(date), day(date))),
year = paste0(year(date))) |>
select(date_year, year, OBS_VALUE) |>
arrange(date_year, year) |>
ggplot() + theme_minimal() + xlab("") + ylab("Solde général d'exécution (€ courants)") +
geom_line(aes(x = date_year, y = OBS_VALUE/1000, color = year)) +
theme(legend.title = element_blank(),
legend.position = "none",
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
legend.direction = "horizontal",
axis.text=element_text(size=12),
axis.title=element_text(size=12,face="bold")) +
scale_colour_manual(values = c(viridis(n_year), "red")) +
scale_linetype_manual(values = c("solid", "dashed", "solid", "dashed", "solid")) +
scale_x_date(breaks = "1 month",
labels = date_format("%B")) +
scale_y_continuous(breaks = seq(-900, 900, 20),
labels = scales::dollar_format(pre = "", su = " Md€")) +
geom_text_repel(data = . %>%
filter(year == last_year) %>%
tail(1),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = "red", size = 4) +
geom_text_repel(data = . %>%
filter(date_year == as.Date(paste0(last_year, "-12-01"))),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = viridis(n_year), size = 4)
Euros constants
Code
Sys.setlocale("LC_TIME", "fr_CA.UTF-8")# [1] "fr_CA.UTF-8"
Code
`COMPTES-ETAT` |>
filter(INDICATEUR %in% c("SGE")) |>
month_to_date() |>
select(date, OBS_VALUE) |>
left_join(`IPCH-IPC-2015-ensemble` |>
select(date, INDICATEUR, OBS_VALUE) |>
spread(INDICATEUR, OBS_VALUE) |>
arrange(desc(date)), by = "date") |>
mutate(OBS_VALUE = IPC[1]*OBS_VALUE/IPC) |>
mutate(date_year = ymd(paste(last_year, month(date), day(date))),
year = paste0(year(date))) |>
select(date_year, year, OBS_VALUE) |>
arrange(date_year, year) |>
ggplot() + theme_minimal() + xlab("") + ylab("Solde général d'exécution (€ constants)") +
geom_line(aes(x = date_year, y = OBS_VALUE/1000, color = year)) +
theme(legend.title = element_blank(),
legend.position = "none",
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
legend.direction = "horizontal",
axis.text=element_text(size=12),
axis.title=element_text(size=12,face="bold")) +
scale_colour_manual(values = c(viridis(n_year), "red")) +
scale_linetype_manual(values = c("solid", "dashed", "solid", "dashed", "solid")) +
scale_x_date(breaks = "1 month",
labels = date_format("%B")) +
scale_y_continuous(breaks = seq(-900, 900, 20),
labels = scales::dollar_format(pre = "", su = " Md€")) +
geom_text_repel(data = . %>%
filter(year == last_year) %>%
tail(1),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = "red", size = 4) +
geom_text_repel(data = . %>%
filter(date_year == as.Date(paste0(last_year, "-12-01"))),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = viridis(n_year), size = 4)
% du PIB
Code
Sys.setlocale("LC_TIME", "fr_CA.UTF-8")# [1] "fr_CA.UTF-8"
Code
`COMPTES-ETAT` |>
filter(INDICATEUR %in% c("SGE")) |>
month_to_date() |>
select(date, OBS_VALUE) |>
mutate(year = year(date)) |>
left_join(gdp |>
transmute(gdp, year = year(date)), by = "year") |>
mutate(OBS_VALUE = OBS_VALUE/(gdp*1000)) |>
mutate(date_year = ymd(paste(last_year, month(date), day(date))),
year = paste0(year(date))) |>
select(date_year, year, OBS_VALUE) |>
arrange(date_year, year) |>
ggplot() + theme_minimal() + xlab("") + ylab("Solde général d'exécution (% du PIB)") +
geom_line(aes(x = date_year, y = OBS_VALUE, color = year)) +
theme(legend.title = element_blank(),
legend.position = "none",
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
legend.direction = "horizontal",
axis.text=element_text(size=12),
axis.title=element_text(size=12,face="bold")) +
scale_colour_manual(values = c(viridis(n_year), "red")) +
scale_linetype_manual(values = c("solid", "dashed", "solid", "dashed", "solid")) +
scale_x_date(breaks = "1 month",
labels = date_format("%B")) +
scale_y_continuous(breaks = 0.01*seq(-10, 0, 1),
labels = percent_format(acc = 1)) +
geom_text_repel(data = . %>%
filter(year == last_year) %>%
tail(1),
aes(x = date_year, y = OBS_VALUE, label = year),
fontface ="plain", color = "red", size = 4) +
geom_text_repel(data = . %>%
filter(date_year == as.Date(paste0(last_year, "-12-01"))),
aes(x = date_year, y = OBS_VALUE, label = year),
fontface ="plain", color = viridis(n_year), size = 4)
2015-
Code
n_year <- year(Sys.Date()) - 2015
Sys.setlocale("LC_TIME", "fr_CA.UTF-8")# [1] "fr_CA.UTF-8"
Code
`COMPTES-ETAT` |>
filter(INDICATEUR %in% c("SGE")) |>
month_to_date() |>
filter(date >= as.Date("2015-01-01")) |>
mutate(date_year = ymd(paste(last_year, month(date), day(date))),
year = paste0(year(date))) |>
select(date_year, year, OBS_VALUE) |>
arrange(date_year, year) |>
ggplot() + theme_minimal() + xlab("") + ylab("Solde général d'exécution") +
geom_line(aes(x = date_year, y = OBS_VALUE/1000, color = year)) +
theme(legend.title = element_blank(),
legend.position = "none",
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
legend.direction = "horizontal",
axis.text=element_text(size=12),
axis.title=element_text(size=12,face="bold")) +
scale_colour_manual(values = c(viridis(n_year), "red")) +
scale_linetype_manual(values = c("solid", "dashed", "solid", "dashed", "solid")) +
scale_x_date(breaks = "1 month",
labels = date_format("%B")) +
scale_y_continuous(breaks = seq(-900, 900, 20),
labels = scales::dollar_format(pre = "", su = " Md€")) +
geom_text_repel(data = . %>%
filter(year == last_year) %>%
tail(1),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = "red", size = 4) +
geom_text_repel(data = . %>%
filter(date_year == as.Date(paste0(last_year, "-12-01"))),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = viridis(n_year), size = 4)
2017-
Code
`COMPTES-ETAT` |>
filter(INDICATEUR %in% c("SGE")) |>
month_to_date() |>
filter(date >= as.Date("2017-01-01")) |>
ggplot() + theme_minimal() + xlab("") + ylab("") +
geom_line(aes(x = date, y = OBS_VALUE/1000)) +
theme(legend.title = element_blank(),
legend.position = c(0.7, 0.9)) +
scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(-900, 900, 20),
labels = scales::dollar_format(pre = "", su = "Mds€"))
2018-
Code
n_year <- year(Sys.Date()) - 2018
Sys.setlocale("LC_TIME", "fr_CA.UTF-8")# [1] "fr_CA.UTF-8"
Code
`COMPTES-ETAT` |>
filter(INDICATEUR %in% c("SGE")) |>
month_to_date() |>
filter(date >= as.Date("2018-01-01")) |>
mutate(date_year = ymd(paste(last_year, month(date), day(date))),
year = paste0(year(date))) |>
select(date_year, year, OBS_VALUE) |>
arrange(date_year, year) |>
ggplot() + theme_minimal() + xlab("") + ylab("Solde général d'exécution") +
geom_line(aes(x = date_year, y = OBS_VALUE/1000, color = year)) +
theme(legend.title = element_blank(),
legend.position = "none",
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
legend.direction = "horizontal",
axis.text=element_text(size=12),
axis.title=element_text(size=14,face="bold")) +
scale_colour_manual(values = c(viridis(n_year), "red")) +
scale_linetype_manual(values = c("solid", "dashed", "solid", "dashed", "solid")) +
scale_x_date(breaks = "1 month",
labels = date_format("%B")) +
scale_y_continuous(breaks = seq(-900, 900, 20),
labels = scales::dollar_format(pre = "", su = " Md€")) +
geom_text_repel(data = . %>%
filter(year == last_year) %>%
tail(1),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = "red", size = 4) +
geom_text_repel(data = . %>%
filter(date_year == as.Date(paste0(last_year, "-12-01"))),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = viridis(n_year), size = 4)
Dépenses
2009-
Code
n_year <- year(Sys.Date()) - 2009
Sys.setlocale("LC_TIME", "fr_CA.UTF-8")# [1] "fr_CA.UTF-8"
Code
`COMPTES-ETAT` |>
filter(INDICATEUR %in% c("DEP")) |>
month_to_date() |>
filter(date >= as.Date("2009-01-01")) |>
mutate(date_year = ymd(paste(last_year, month(date), day(date))),
year = paste0(year(date))) |>
select(date_year, year, OBS_VALUE) |>
arrange(date_year, year) |>
ggplot() + theme_minimal() + xlab("") + ylab("Dépenses") +
geom_line(aes(x = date_year, y = OBS_VALUE/1000, color = year)) +
theme(legend.title = element_blank(),
legend.position = "none",
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
legend.direction = "horizontal",
axis.text=element_text(size=12),
axis.title=element_text(size=14,face="bold")) +
scale_colour_manual(values = c(viridis(n_year), "red")) +
scale_linetype_manual(values = c("solid", "dashed", "solid", "dashed", "solid")) +
scale_x_date(breaks = "1 month",
labels = date_format("%B")) +
scale_y_continuous(breaks = seq(-900, 900, 50),
labels = scales::dollar_format(pre = "", su = " Md€")) +
geom_text_repel(data = . %>%
filter(year == last_year) %>%
tail(1),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = "red", size = 4) +
geom_text_repel(data = . %>%
filter(date_year == as.Date(paste0(last_year, "-12-01"))),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = viridis(n_year), size = 4)
2016-
Code
n_year <- year(Sys.Date()) - 2016
Sys.setlocale("LC_TIME", "fr_CA.UTF-8")# [1] "fr_CA.UTF-8"
Code
`COMPTES-ETAT` |>
filter(INDICATEUR %in% c("DEP")) |>
month_to_date() |>
filter(date >= as.Date("2016-01-01")) |>
mutate(date_year = ymd(paste(last_year, month(date), day(date))),
year = paste0(year(date))) |>
select(date_year, year, OBS_VALUE) |>
arrange(date_year, year) |>
ggplot() + theme_minimal() + xlab("") + ylab("Dépenses") +
geom_line(aes(x = date_year, y = OBS_VALUE/1000, color = year)) +
theme(legend.title = element_blank(),
legend.position = "none",
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
legend.direction = "horizontal",
axis.text=element_text(size=12),
axis.title=element_text(size=14,face="bold")) +
scale_colour_manual(values = c(viridis(n_year), "red")) +
scale_linetype_manual(values = c("solid", "dashed", "solid", "dashed", "solid")) +
scale_x_date(breaks = "1 month",
labels = date_format("%B")) +
scale_y_continuous(breaks = seq(-900, 900, 50),
labels = scales::dollar_format(pre = "", su = " Md€")) +
geom_text_repel(data = . %>%
filter(year == last_year) %>%
tail(1),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = "red", size = 4) +
geom_text_repel(data = . %>%
filter(date_year == as.Date(paste0(last_year, "-12-01"))),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = viridis(n_year), size = 4)
2018-
Code
n_year <- year(Sys.Date()) - 2018
Sys.setlocale("LC_TIME", "fr_CA.UTF-8")# [1] "fr_CA.UTF-8"
Code
`COMPTES-ETAT` |>
filter(INDICATEUR %in% c("DEP")) |>
month_to_date() |>
filter(date >= as.Date("2018-01-01")) |>
mutate(date_year = ymd(paste(last_year, month(date), day(date))),
year = paste0(year(date))) |>
select(date_year, year, OBS_VALUE) |>
arrange(date_year, year) |>
ggplot() + theme_minimal() + xlab("") + ylab("Dépenses") +
geom_line(aes(x = date_year, y = OBS_VALUE/1000, color = year)) +
theme(legend.title = element_blank(),
legend.position = "none",
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
legend.direction = "horizontal",
axis.text=element_text(size=12),
axis.title=element_text(size=14,face="bold")) +
scale_colour_manual(values = c(viridis(n_year), "red")) +
scale_linetype_manual(values = c("solid", "dashed", "solid", "dashed", "solid")) +
scale_x_date(breaks = "1 month",
labels = date_format("%B")) +
scale_y_continuous(breaks = seq(-900, 900, 50),
labels = scales::dollar_format(pre = "", su = " Md€")) +
geom_text_repel(data = . %>%
filter(year == last_year) %>%
tail(1),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = "red", size = 4) +
geom_text_repel(data = . %>%
filter(date_year == as.Date(paste0(last_year, "-12-01"))),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = viridis(n_year), size = 4)
Recettes
2009-
Code
n_year <- year(Sys.Date()) - 2009
Sys.setlocale("LC_TIME", "fr_CA.UTF-8")# [1] "fr_CA.UTF-8"
Code
`COMPTES-ETAT` |>
filter(INDICATEUR %in% c("REC")) |>
month_to_date() |>
filter(date >= as.Date("2009-01-01")) |>
mutate(date_year = ymd(paste(last_year, month(date), day(date))),
year = paste0(year(date))) |>
select(date_year, year, OBS_VALUE) |>
arrange(date_year, year) |>
ggplot() + theme_minimal() + xlab("") + ylab("Recettes") +
geom_line(aes(x = date_year, y = OBS_VALUE/1000, color = year)) +
theme(legend.title = element_blank(),
legend.position = "none",
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
legend.direction = "horizontal",
axis.text=element_text(size=12),
axis.title=element_text(size=14,face="bold")) +
scale_colour_manual(values = c(viridis(n_year), "red")) +
scale_linetype_manual(values = c("solid", "dashed", "solid", "dashed", "solid")) +
scale_x_date(breaks = "1 month",
labels = date_format("%B")) +
scale_y_continuous(breaks = seq(-900, 900, 50),
labels = scales::dollar_format(pre = "", su = " Md€")) +
geom_text_repel(data = . %>%
filter(year == last_year) %>%
tail(1),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = "red", size = 4) +
geom_text_repel(data = . %>%
filter(date_year == as.Date(paste0(last_year, "-12-01"))),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = viridis(n_year), size = 4)
2018-
Code
n_year <- year(Sys.Date()) - 2018
Sys.setlocale("LC_TIME", "fr_CA.UTF-8")# [1] "fr_CA.UTF-8"
Code
`COMPTES-ETAT` |>
filter(INDICATEUR %in% c("REC")) |>
month_to_date() |>
filter(date >= as.Date("2018-01-01")) |>
mutate(date_year = ymd(paste(last_year, month(date), day(date))),
year = paste0(year(date))) |>
select(date_year, year, OBS_VALUE) |>
arrange(date_year, year) |>
ggplot() + theme_minimal() + xlab("") + ylab("Recettes") +
geom_line(aes(x = date_year, y = OBS_VALUE/1000, color = year)) +
theme(legend.title = element_blank(),
legend.position = "none",
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
legend.direction = "horizontal",
axis.text=element_text(size=12),
axis.title=element_text(size=14,face="bold")) +
scale_colour_manual(values = c(viridis(n_year), "red")) +
scale_linetype_manual(values = c("solid", "dashed", "solid", "dashed", "solid")) +
scale_x_date(breaks = "1 month",
labels = date_format("%B")) +
scale_y_continuous(breaks = seq(-900, 900, 50),
labels = scales::dollar_format(pre = "", su = " Md€")) +
geom_text_repel(data = . %>%
filter(year == last_year) %>%
tail(1),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = "red", size = 4) +
geom_text_repel(data = . %>%
filter(date_year == as.Date(paste0(last_year, "-12-01"))),
aes(x = date_year, y = OBS_VALUE/1000, label = year),
fontface ="plain", color = viridis(n_year), size = 4)
Dépenses, Recettes
Tous
Code
`COMPTES-ETAT` |>
filter(INDICATEUR %in% c("DEP", "REC")) |>
month_to_date() |>
ggplot() + theme_minimal() + xlab("") + ylab("") +
geom_line(aes(x = date, y = OBS_VALUE/1000, color = INDICATEUR)) +
theme(legend.title = element_blank(),
legend.position = c(0.7, 0.9)) +
scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0, 900, 50),
labels = scales::dollar_format(pre = "", su = "Mds€"))
2017-
Code
`COMPTES-ETAT` |>
filter(INDICATEUR %in% c("DEP", "REC")) |>
month_to_date() |>
filter(date >= as.Date("2017-01-01")) |>
ggplot() + theme_minimal() + xlab("") + ylab("") +
geom_line(aes(x = date, y = OBS_VALUE/1000, color = INDICATEUR)) +
theme(legend.title = element_blank(),
legend.position = c(0.2, 0.9)) +
scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0, 900, 50),
labels = scales::dollar_format(pre = "", su = "Mds€"))
Last year
Code
`COMPTES-ETAT` |>
filter(INDICATEUR %in% c("DEP", "REC")) |>
month_to_date() |>
group_by(INDICATEUR) |>
arrange(date) %>%
do(tail(., n = 12)) |>
ggplot() + theme_minimal() + xlab("") + ylab("") +
geom_line(aes(x = date, y = OBS_VALUE/1000, color = INDICATEUR)) +
theme(legend.title = element_blank(),
legend.position = c(0.2, 0.9)) +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
scale_y_continuous(breaks = seq(0, 900, 50),
labels = scales::dollar_format(pre = "", su = "Mds€"))