Point d’indice de la fonction publique

Data - IPP

Info

source dataset .html .RData
insee INDICE-TRAITEMENT-FP 2025-01-02 2025-01-02
insee IPC-2015 2024-12-30 2024-12-30
insee IPCH-2015 2025-01-02 2025-01-02
ipp indicefp 2025-01-05 2025-01-05

Données sur le pouvoir d’achat

source dataset .html .RData
insee CNA-2014-RDB 2024-12-30 2024-12-30
insee CNT-2014-CSI 2025-01-02 2025-01-02
insee conso-eff-fonction 2024-12-29 2022-06-14
insee econ-gen-revenu-dispo-pouv-achat-2 2024-12-29 2024-07-05
insee reve-conso-evo-dep-pa 2024-12-29 2024-12-11
insee reve-niv-vie-individu-activite 2024-12-29 NA
insee reve-niv-vie-pouv-achat-trim 2024-12-29 2024-12-11
insee T_7401 2024-12-29 2024-10-18
insee t_men_val 2025-01-02 2024-12-21
insee t_pouvachat_val 2025-01-02 2024-12-21
insee t_recapAgent_val 2024-12-29 2024-12-21
insee t_salaire_val 2024-12-29 2024-12-21
oecd HH_DASH 2024-09-15 2023-09-09

Indice Fonction Publique

All

Valeur

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ggplot() + geom_line(aes(x = date, y = value)) +
  scale_color_manual(values = viridis(8)[1:7]) +
  theme_minimal() +
  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_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, suffix = " € / point", prefix = "")) + 
  ylab("Point Indice Fonction Publique (euros)") + xlab("")

Base 100

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  mutate(value = 100*value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() +
  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_log10(breaks = seq(0, 3000, 100)) +
  ylab("Point Indice Fonction Publique") + xlab("")

1970-1990

Valeur

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(date >= as.Date("1970-01-01"),
         date <= as.Date("1990-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + ylab("Point Indice Fonction Publique (euros)") + xlab("") +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 4),
                     labels = dollar_format(accuracy = 1, suffix = " € / point", prefix = ""))

Base 100

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(date >= as.Date("1970-01-01"),
         date <= as.Date("1990-01-01")) %>%
  mutate(value = 100*value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + ylab("Point Indice Fonction Publique") + xlab("") +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1000, 20))

1986-

Valeur

Code
indicefp %>%
  arrange(desc(date)) %>%
  # Add today's date to be equal ------
  slice(1, 1:n()) %>%
  mutate(date = ifelse(row_number() == 1, Sys.Date(), date)) %>%
  mutate(date = as.Date(date)) %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(date >= as.Date("1986-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + ylab("Point Indice Fonction Publique (euros)") + xlab("") +
  scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 1),
                     labels = dollar_format(accuracy = 1, suffix = " € / point", prefix = ""))

Base 100

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(date >= as.Date("1986-01-01")) %>%
  mutate(value = 100*value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + ylab("Point Indice Fonction Publique") + xlab("") +
  scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 5))

1990-

Valeur

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(date >= as.Date("1990-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + ylab("Point Indice Fonction Publique (euros)") + xlab("") +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 1),
                     labels = dollar_format(accuracy = 1, suffix = " € / point", prefix = ""))

Base 100

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(date >= as.Date("1990-01-01")) %>%
  mutate(value = 100*value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + ylab("Point Indice Fonction Publique") + xlab("") +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 5))

1992-

Valeur

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(date >= as.Date("1992-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + ylab("Point Indice Fonction Publique (euros)") + xlab("") +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 1),
                     labels = dollar_format(accuracy = 1, suffix = " € / point", prefix = ""))

Base 100

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(date >= as.Date("1992-01-01")) %>%
  mutate(value = 100*value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + ylab("Point Indice Fonction Publique (euros)") + xlab("") +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 5))

1996-

Valeur

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + ylab("Point Indice Fonction Publique (euros)") + xlab("") +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 1),
                     labels = dollar_format(accuracy = 1, suffix = " € / point", prefix = ""))

Base 100

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  mutate(value = 100*value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + ylab("Point Indice Fonction Publique (euros)") + xlab("") +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 5))

inflation

Table

Code
cpi %>%
  print_table_conditional()

Graph

All

Code
cpi %>%
  mutate(cpi = 100*cpi/cpi[date == as.Date("1951-01-01")]) %>%
  ggplot + geom_line(aes(x = date, y = cpi)) +
  scale_x_date(breaks = seq(1950, 2020, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(100, 200, 300, 500, 800, 1000, 1200, 1500, 2000)) +
  theme_minimal() + xlab("") + ylab("")

1990-

Code
cpi %>%
  filter(date >= as.Date("1990-01-01")) %>%
  mutate(cpi = 100*cpi/cpi[date == as.Date("1990-01-01")]) %>%
  ggplot + geom_line(aes(x = date, y = cpi)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 200, 5)) +
  theme_minimal() + xlab("") + ylab("Inflation (100 = 1990)")

1995-

Code
cpi %>%
  filter(date >= as.Date("1995-01-01")) %>%
  mutate(cpi = 100*cpi/cpi[date == as.Date("1995-01-01")]) %>%
  ggplot + geom_line(aes(x = date, y = cpi)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 200, 5)) +
  theme_minimal() + xlab("") + ylab("Inflation (100 = 1995)")

1996-

Code
cpi %>%
  filter(date >= as.Date("1996-01-01")) %>%
  mutate(cpi = 100*cpi/cpi[date == as.Date("1996-01-01")]) %>%
  ggplot + geom_line(aes(x = date, y = cpi)) +
  scale_x_date(breaks = seq(1950, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 200, 5)) +
  theme_minimal() + xlab("") + ylab("Inflation (100 = 1996)")

2000-

Code
cpi %>%
  filter(date >= as.Date("2000-01-01")) %>%
  mutate(cpi = 100*cpi/cpi[date == as.Date("2000-01-01")]) %>%
  ggplot + geom_line(aes(x = date, y = cpi)) +
  scale_x_date(breaks = seq(1950, 2020, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 200, 5)) +
  theme_minimal() + xlab("") + ylab("Inflation (100 = 2000)")

2012-

Code
cpi %>%
  filter(date >= as.Date("2012-01-01")) %>%
  mutate(cpi = 100*cpi/cpi[date == as.Date("2012-01-01")]) %>%
  ggplot + geom_line(aes(x = date, y = cpi)) +
  scale_x_date(breaks = seq(1950, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 200, 1)) +
  theme_minimal() + xlab("") + ylab("Inflation (100 = 2012)")

Indice Fonction Publique Réel

1970-

Annuel

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(month(date) == 1,
         day(date) == 1) %>%
  left_join(cpi, by = "date") %>%
  mutate(value = value/cpi,
         value = 100*value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 2)) + 
  ylab("Point Indice Fonction Publique (euros constants)") + xlab("")

1965-

Annuel

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(date >= as.Date("1965-01-01")) %>%
  filter(month(date) == 1,
         day(date) == 1) %>%
  left_join(cpi, by = "date") %>%
  mutate(value = value/cpi,
         value = 100*value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 2)) + 
  ylab("Point Indice Fonction Publique (euros constants)") + xlab("")

1996-

Annuel

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(month(date) == 1,
         day(date) == 1) %>%
  left_join(cpi, by = "date") %>%
  filter(date >= as.Date("1996-01-01")) %>%
  mutate(value = value/cpi,
         value = 100*value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 2)) + 
  ylab("Point Indice Fonction Publique (euros constants)") + xlab("")

CPI

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(month(date) == 1,
         day(date) == 1) %>%
  left_join(cpi2, by = "date") %>%
  filter(date >= as.Date("1996-01-01")) %>%
  mutate(value = value/cpi,
         value = 100*value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 2)) + 
  ylab("Point Indice Fonction Publique (€ constants)") + xlab("")

CPIH

All

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(month(date) == 1,
         day(date) == 1) %>%
  left_join(cpi2, by = "date") %>%
  filter(date >= as.Date("1997-01-01")) %>%
  mutate(value = value/cpih,
         value = 100*value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 2)) + 
  ylab("Point Indice Fonction Publique (€ constants)") + xlab("")

in %

Code
data_alter_eco <- indicefp %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  filter(month(date) == 1,
         day(date) == 1) %>%
  left_join(cpi2, by = "date") %>%
  filter(date >= as.Date("1996-01-01")) %>%
  transmute(date, 
            value_cpih = value/cpih,
            value_cpi = value/cpi) %>%
  transmute(date,
            `Valeur du Point d'Indice de la Fonction Publique par rapport à 1996 (IPCH, Eurostat)` = value_cpih/value_cpih[1],
            `Valeur du Point d'Indice de la Fonction Publique par rapport à 1996 (IPC, INSEE)` = value_cpi/value_cpi[1])

write_csv(data_alter_eco, file = "data_alter_eco.csv")

data_alter_eco %>%
  gather(variable, value, -date) %>%
  ggplot() + geom_line(aes(x = date, y = value, color = variable)) + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_color_manual(values = viridis(3)[1:2]) +
  theme(legend.position = c(0.43, 0.1),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(1, 0.02, -0.02),
                labels = percent(seq(1, 0.02, -0.02)-1, acc = 1)) + 
  ylab("Valeur du Point Indice Fonction Publique vs. 1996") + xlab("")

in %

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  filter(month(date) == 1,
         day(date) == 1) %>%
  left_join(cpi2, by = "date") %>%
  filter(date >= as.Date("1997-01-01")) %>%
  transmute(date, 
            value_cpih = value/cpih,
            value_cpi = value/cpi) %>%
  transmute(date,
            `Valeur réelle du Point d'Indice par rapport à 1996` = value_cpih/value_cpih[1]) %>%
  gather(variable, value, -date) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_color_manual(values = viridis(3)[1:2]) +
  theme(legend.position = c(0.43, 0.1),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(1, 0.02, -0.02),
                labels = percent(seq(1, 0.02, -0.02)-1, acc = 1)) + 
  ylab("Valeur du Point Indice vs. 1996") + xlab("") + 
  labs(title = "Valeur réelle du Point Indice de la Fonction Publique par rapport à 1997",
              subtitle = "(Indice des prix utilisé: Indice des Prix à la Consommation Harmonisé (IPCH))")

1996-

1997-

Mensuel

Code
load_data("insee/INDICE-TRAITEMENT-FP-net-brut-mensuel.RData")
indicefp %>%
  select(date, point_indice_en_euros) %>%
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  left_join(cpi2_m, by = "date") %>%
  filter(day(date) == 1) %>%
  left_join(net_brut_mensuel, by = "date") %>%
  filter(date >= as.Date("1997-01-01")) %>%
  transmute(date,
            `Valeur du Point d'Indice de la Fonction Publique vs. 1997 (IPCH, Eurostat)` = (value/value[1])*(cpih[1]/cpih)*net_brut,
            `Valeur du Point d'Indice de la Fonction Publique vs. 1997 (IPC, INSEE)` = (value/value[1])*(cpi[1]/cpi)*net_brut) %>%
  gather(variable, OBS_VALUE, -date) %>%
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = variable)) + theme_minimal() +
  scale_x_date(breaks = c(seq(1997, 2100, 5), seq(1999, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.43, 0.12),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(1, 0.02, -0.02),
                labels = percent(seq(1, 0.02, -0.02)-1, acc = 1)) + 
  ylab("Valeur du Point Indice Fonction Publique vs. 1997") + xlab("") +
  geom_text(data = . %>% filter((year(date) %in% seq(1999, 2019, 5) & month(date) == 1) | date == max(date)),
            aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE-1, acc = 0.1)), 
                  fontface ="bold", color = "black", size = 3)

1999-

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  filter(month(date) == 1,
         day(date) == 1) %>%
  left_join(cpi2, by = "date") %>%
  filter(date >= as.Date("1999-01-01")) %>%
  transmute(date, 
            value_cpih = value/cpih,
            value_cpi = value/cpi) %>%
  transmute(date,
            `Valeur du Point d'Indice de la Fonction Publique vs. 1999 (IPCH, Eurostat)` = value_cpih/value_cpih[1]-1,
            `Valeur du Point d'Indice de la Fonction Publique vs. 1999 (IPC, INSEE)` = value_cpi/value_cpi[1]-1) %>%
  gather(variable, OBS_VALUE, -date) %>%
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = variable)) + theme_minimal() +
  scale_x_date(breaks = seq(1999, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.43, 0.12),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-200, 200, 2),
                     labels = percent_format(acc = 1)) + 
  ylab("Valeur du Point Indice Fonction Publique vs. 1999") + xlab("") +
  geom_text(data = . %>% filter(year(date) %in% seq(1999, 2040, 5)),aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)), 
                  fontface ="plain", color = "black", size = 3)

2015- (avec correction net brut)

Annuel

Code
load_data("insee/INDICE-TRAITEMENT-FP-net-brut-annuel.RData")
indicefp %>%
  select(date, point_indice_en_euros) %>%
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  filter(month(date) == 1,
         day(date) == 1) %>%
  left_join(cpi2, by = "date") %>%
  left_join(net_brut_annuel, by = "date") %>%
  filter(date >= as.Date("2015-01-01")) %>%
  transmute(date,
            `Valeur du Point d'Indice de la Fonction Publique vs. 1999 (IPCH, Eurostat)` = (value/value[1])*(cpih[1]/cpih)*net_brut-1,
            `Valeur du Point d'Indice de la Fonction Publique vs. 1999 (IPC, INSEE)` = (value/value[1])*(cpi[1]/cpi)*net_brut-1) %>%
  gather(variable, OBS_VALUE, -date) %>%
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = variable)) + theme_minimal() +
  scale_x_date(breaks = seq(1999, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.43, 0.12),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-200, 200, 2),
                     labels = percent_format(acc = 1)) + 
  ylab("Valeur du Point Indice Fonction Publique vs. 1999") + xlab("") +
  geom_text(data = . %>% filter(year(date) %in% seq(1999, 2040, 5)),
            aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 1)), 
                  fontface ="plain", color = "black", size = 3)

Mensuel

Code
load_data("insee/INDICE-TRAITEMENT-FP-net-brut-mensuel.RData")
indicefp %>%
  select(date, point_indice_en_euros) %>%
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  left_join(cpi2_m, by = "date") %>%
  filter(day(date) == 1) %>%
  left_join(net_brut_mensuel, by = "date") %>%
  filter(date >= as.Date("2015-01-01")) %>%
  transmute(date,
            `Valeur du Point d'Indice de la Fonction Publique vs. 2015 (IPCH, Eurostat)` = (value/value[1])*(cpih[1]/cpih)*(net_brut/net_brut[1]),
            `Valeur du Point d'Indice de la Fonction Publique vs. 2015 (IPC, INSEE)` = (value/value[1])*(cpi[1]/cpi)*(net_brut/net_brut[1])) %>%
  gather(variable, OBS_VALUE, -date) %>%
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = variable)) + theme_minimal() +
  scale_x_date(breaks = c(seq(1999, 2100, 1), seq(1997, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.43, 0.12),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(1, 0.02, -0.02),
                labels = percent(seq(1, 0.02, -0.02)-1, acc = 1)) + 
  ylab("Valeur du Point Indice Fonction Publique vs. 2015") + xlab("") +
  geom_label(data = . %>% filter(date == max(date)),
            aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE-1, acc = 0.1), color = variable), 
                  fontface ="bold", size = 4)

2021T4-

Code
load_data("insee/INDICE-TRAITEMENT-FP-net-brut-mensuel.RData")
indicefp %>%
  select(date, point_indice_en_euros) %>%
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  left_join(cpi2_m, by = "date") %>%
  filter(day(date) == 1) %>%
  left_join(net_brut_mensuel, by = "date") %>%
  filter(date >= as.Date("2021-10-01")) %>%
  transmute(date,
            `Valeur du Point d'Indice de la Fonction Publique vs. 2021T4 (IPCH, Eurostat)` = (value/value[1])*(cpih[1]/cpih)*(net_brut/net_brut[1]),
            `Valeur du Point d'Indice de la Fonction Publique vs. 2015 (IPC, INSEE)` = (value/value[1])*(cpi[1]/cpi)*(net_brut/net_brut[1])) %>%
  gather(variable, OBS_VALUE, -date) %>%
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = variable)) + theme_minimal() +
  scale_x_date(breaks = "3 months",
               labels = date_format("%Y %b")) +
  theme(legend.position = c(0.43, 0.12),
        legend.title = element_blank(),
        axis.text.x = ) +
  scale_y_log10(breaks = seq(1, 0.02, -0.01),
                labels = percent(seq(1, 0.02, -0.01)-1, acc = 1)) + 
  ylab("Valeur du Point Indice Fonction Publique vs. 2015") + xlab("") +
  geom_label(data = . %>% filter(date == max(date)),
            aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE-1, acc = 0.1)), 
                  fontface ="bold", color = "black", size = 3)

2012-

Mensuel

Code
load_data("insee/INDICE-TRAITEMENT-FP-net-brut-mensuel.RData")
indicefp %>%
  select(date, point_indice_en_euros) %>%
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  left_join(cpi2_m, by = "date") %>%
  filter(day(date) == 1) %>%
  left_join(net_brut_mensuel, by = "date") %>%
  filter(date >= as.Date("2012-01-01")) %>%
  transmute(date,
            `Valeur du Point d'Indice de la Fonction Publique vs. 2012 (IPCH, Eurostat)` = (value/value[1])*(cpih[1]/cpih)*(net_brut/net_brut[1]),
            `Valeur du Point d'Indice de la Fonction Publique vs. 2012 (IPC, INSEE)` = (value/value[1])*(cpi[1]/cpi)*(net_brut/net_brut[1])) %>%
  gather(variable, OBS_VALUE, -date) %>%
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = variable)) + theme_minimal() +
  scale_x_date(breaks = c(seq(1999, 2100, 1), seq(1997, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.43, 0.12),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(1, 0.02, -0.02),
                labels = percent(seq(1, 0.02, -0.02)-1, acc = 1)) + 
  ylab("Valeur du Point Indice Fonction Publique vs. 2012") + xlab("") +
  geom_text_repel(data = . %>% filter(year(date) %in% c(2017, 2024),
                                month(date) == 3),
            aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE-1, acc = 0.1)), 
                  fontface ="bold", color = "black", size = 3)

1999- (avec correction net brut)

Annuel

Code
load_data("insee/INDICE-TRAITEMENT-FP-net-brut-annuel.RData")
indicefp %>%
  select(date, point_indice_en_euros) %>%
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  filter(month(date) == 1,
         day(date) == 1) %>%
  left_join(cpi2, by = "date") %>%
  left_join(net_brut_annuel, by = "date") %>%
  filter(date >= as.Date("1999-01-01")) %>%
  transmute(date,
            `Valeur du Point d'Indice de la Fonction Publique vs. 1999 (IPCH, Eurostat)` = (value/value[1])*(cpih[1]/cpih)*net_brut-1,
            `Valeur du Point d'Indice de la Fonction Publique vs. 1999 (IPC, INSEE)` = (value/value[1])*(cpi[1]/cpi)*net_brut-1) %>%
  gather(variable, OBS_VALUE, -date) %>%
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = variable)) + theme_minimal() +
  scale_x_date(breaks = seq(1999, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.43, 0.12),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-200, 200, 2),
                     labels = percent_format(acc = 1)) + 
  ylab("Valeur du Point Indice Fonction Publique vs. 1999") + xlab("") +
  geom_text(data = . %>% filter(year(date) %in% seq(1999, 2040, 5)),
            aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 1)), 
                  fontface ="plain", color = "black", size = 3)

Trimestriel

Code
load_data("insee/INDICE-TRAITEMENT-FP-net-brut-trimestriel.RData")
indicefp %>%
  select(date, point_indice_en_euros) %>%
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  left_join(cpi2_m, by = "date") %>%
  filter(month(date) %in% c(1, 4, 7, 10),
         day(date) == 1) %>%
  left_join(net_brut_trimestriel, by = "date") %>%
  filter(date >= as.Date("1999-01-01")) %>%
  transmute(date,
            `Valeur du Point d'Indice de la Fonction Publique vs. 1999 (IPCH, Eurostat)` = (value/value[1])*(cpih[1]/cpih)*net_brut-1,
            `Valeur du Point d'Indice de la Fonction Publique vs. 1999 (IPC, INSEE)` = (value/value[1])*(cpi[1]/cpi)*net_brut-1) %>%
  gather(variable, OBS_VALUE, -date) %>%
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = variable)) + theme_minimal() +
  scale_x_date(breaks = seq(1999, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.43, 0.12),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-200, 200, 2),
                     labels = percent_format(acc = 1)) + 
  ylab("Valeur du Point Indice Fonction Publique vs. 1999") + xlab("") +
  geom_text(data = . %>% filter(year(date) %in% seq(1999, 2040, 5),
                                month(date) == 1),
            aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 1)), 
                  fontface ="plain", color = "black", size = 3)

Mensuel

Code
load_data("insee/INDICE-TRAITEMENT-FP-net-brut-mensuel.RData")
indicefp %>%
  select(date, point_indice_en_euros) %>%
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  left_join(cpi2_m, by = "date") %>%
  filter(day(date) == 1) %>%
  left_join(net_brut_mensuel, by = "date") %>%
  filter(date >= as.Date("1999-01-01")) %>%
  transmute(date,
            `Valeur du Point d'Indice de la Fonction Publique vs. 1999 (IPCH, Eurostat)` = (value/value[1])*(cpih[1]/cpih)*net_brut,
            `Valeur du Point d'Indice de la Fonction Publique vs. 1999 (IPC, INSEE)` = (value/value[1])*(cpi[1]/cpi)*net_brut) %>%
  gather(variable, OBS_VALUE, -date) %>%
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = variable)) + theme_minimal() +
  scale_x_date(breaks = c(seq(1999, 2100, 5), seq(1997, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.43, 0.12),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(1, 0.02, -0.02),
                labels = percent(seq(1, 0.02, -0.02)-1, acc = 1)) + 
  ylab("Valeur du Point Indice Fonction Publique vs. 1999") + xlab("") +
  geom_text(data = . %>% filter((year(date) %in% seq(2009, 2019, 5) & month(date) == 1)),
            aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE-1, acc = 0.1)), 
                  fontface ="bold", color = "black", size = 3) +
  geom_label(data = . %>% filter(date == max(date)),
            aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE-1, acc = 0.1), color = variable), 
                  fontface ="bold", size = 3)

Mai 2007 (Sarkozy)

Code
load_data("insee/INDICE-TRAITEMENT-FP-net-brut-mensuel.RData")
indicefp %>%
  select(date, point_indice_en_euros) %>%
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  left_join(cpi2_m, by = "date") %>%
  filter(day(date) == 1) %>%
  left_join(net_brut_mensuel, by = "date") %>%
  filter(date >= as.Date("2007-05-01")) %>%
  transmute(date,
            `Valeur du Point d'Indice de la Fonction Publique vs. mai 2007 (IPCH, Eurostat)` = (value/value[1])*(cpih[1]/cpih)*(net_brut/net_brut[1]),
            `Valeur du Point d'Indice de la Fonction Publique vs. mai 2007 (IPC, INSEE)` = (value/value[1])*(cpi[1]/cpi)*(net_brut/net_brut[1])) %>%
  gather(variable, OBS_VALUE, -date) %>%
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = variable)) + theme_minimal() +
  scale_x_date(breaks = c(seq(1999, 2100, 5), seq(1997, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.43, 0.12),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(1, 0.02, -0.02),
                labels = percent(seq(1, 0.02, -0.02)-1, acc = 1)) + 
  ylab("Valeur du Point Indice Net vs. mai 2007") + xlab("") +
  geom_text(data = . %>% filter(date %in% c(max(date), as.Date("2012-05-01"), as.Date("2017-05-01"),
                                            as.Date("2022-05-01"))),
            aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE-1, acc = 0.1)), 
                  fontface ="bold", color = "black", size = 3)

2007-

Code
load_data("insee/INDICE-TRAITEMENT-FP-net-brut-mensuel.RData")
indicefp %>%
  select(date, point_indice_en_euros) %>%
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  left_join(cpi2_m, by = "date") %>%
  filter(day(date) == 1) %>%
  left_join(net_brut_mensuel, by = "date") %>%
  filter(date >= as.Date("2007-01-01")) %>%
  transmute(date,
            `Valeur du Point d'Indice de la Fonction Publique vs. 2007 (IPCH, Eurostat)` = (value/value[1])*(cpih[1]/cpih)*net_brut,
            `Valeur du Point d'Indice de la Fonction Publique vs. 2007 (IPC, INSEE)` = (value/value[1])*(cpi[1]/cpi)*net_brut) %>%
  gather(variable, OBS_VALUE, -date) %>%
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = variable)) + theme_minimal() +
  scale_x_date(breaks = c(seq(1999, 2100, 5), seq(1997, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.43, 0.12),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(1, 0.02, -0.02),
                labels = percent(seq(1, 0.02, -0.02)-1, acc = 1)) + 
  ylab("Valeur du Point Indice Fonction Publique vs. 2007") + xlab("") +
  geom_text_repel(data = . %>% filter(year(date) %in% seq(1999, 2040, 5),
                                month(date) == 1),
            aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE-1, acc = 0.1)), 
                  fontface ="bold", color = "black", size = 3)

2017-

Code
load_data("insee/INDICE-TRAITEMENT-FP-net-brut-mensuel.RData")
indicefp %>%
  select(date, point_indice_en_euros) %>%
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  left_join(cpi2_m, by = "date") %>%
  filter(day(date) == 1) %>%
  left_join(net_brut_mensuel, by = "date") %>%
  filter(date >= as.Date("2017-01-01")) %>%
  transmute(date,
            `Valeur du Point d'Indice de la Fonction Publique vs. 2017 (IPCH, Eurostat)` = (value/value[1])*(cpih[1]/cpih)*(net_brut/net_brut[1]),
            `Valeur du Point d'Indice de la Fonction Publique vs. 2017 (IPC, INSEE)` = (value/value[1])*(cpi[1]/cpi)*(net_brut/net_brut[1])) %>%
  gather(variable, OBS_VALUE, -date) %>%
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = variable)) + theme_minimal() +
  scale_x_date(breaks = c(seq(1999, 2100, 1), seq(1997, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.43, 0.12),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(1, 0.02, -0.02),
                labels = percent(seq(1, 0.02, -0.02)-1, acc = 1)) + 
  ylab("Valeur du Point Indice Net vs. 2017") + xlab("") +
  geom_text(data = . %>% filter(date %in% c(max(date), as.Date("2022-01-01"))),
            aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE-1, acc = 0.1)), 
                  fontface ="bold", color = "black", size = 3)

2017T2-

Code
load_data("insee/INDICE-TRAITEMENT-FP-net-brut-mensuel.RData")
indicefp %>%
  select(date, point_indice_en_euros) %>%
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  ungroup %>%
  left_join(cpi2_m, by = "date") %>%
  filter(day(date) == 1) %>%
  left_join(net_brut_mensuel, by = "date") %>%
  filter(date >= as.Date("2017-06-01")) %>%
  transmute(date,
            `Pouvoir d'achat du Point d'Indice Net vs. 2017 (IPCH, Eurostat)` = (value/value[1])*(cpih[1]/cpih)*(net_brut/net_brut[1]),
            `Pouvoir d'achat du Point d'Indice Net vs. 2017 (IPC, INSEE)` = (value/value[1])*(cpi[1]/cpi)*(net_brut/net_brut[1])) %>%
  gather(variable, OBS_VALUE, -date) %>%
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = variable)) + theme_minimal() +
  scale_x_date(breaks = c(seq(1999, 2100, 1), seq(1997, 2100, 5)) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.43, 0.12),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(1, 0.02, -0.02),
                labels = percent(seq(1, 0.02, -0.02)-1, acc = 1)) + 
  ylab("") + xlab("") +
  geom_label(data = . %>% filter(date %in% c(max(date))),
            aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE-1, acc = 0.1), color = variable), 
                  fontface ="bold", size = 4) +
  ggtitle("Valeur du point d'indice net de la fonction publique par rapport à 2017")

2010-2018

Annuel

Code
indicefp %>%
  select(date, point_indice_en_euros) %>%
  
  arrange(desc(date)) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  complete(date = seq.Date(min(date), max(date), by = "day")) %>%
  fill(value) %>%
  filter(month(date) == 1,
         day(date) == 1) %>%
  left_join(cpi, by = "date") %>%
  filter(date >= as.Date("2010-01-01"),
         date <= as.Date("2018-01-01")) %>%
  mutate(value = value/cpi,
         value = 100*value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 1)) + 
  ylab("Point Indice Fonction Publique (euros constants)") + xlab("")