Indices des prix à la consommation harmonisés

Data - INSEE

Info

source dataset .html .RData
insee IPC-2015 2024-11-22 2024-11-22
insee IPCH-2015 2024-11-22 2024-11-22

Données sur l’inflation en France

Title source dataset .html .RData
Budget de famille 2017 insee bdf2017 2024-11-22 2023-11-21
Indices pour la révision d’un bail commercial ou professionnel insee ILC-ILAT-ICC 2024-11-22 2024-11-22
Indices des loyers - Base 2019 insee INDICES_LOYERS 2024-11-22 2024-11-22
Indice des prix à la consommation - Base 1970, 1980 insee IPC-1970-1980 2024-11-22 2024-11-22
Indices des prix à la consommation - Base 1990 insee IPC-1990 2024-11-22 2024-11-22
Indice des prix à la consommation - Base 2015 insee IPC-2015 2024-11-22 2024-11-22
Prix moyens de vente de détail insee IPC-PM-2015 2024-11-22 2024-11-22
Indices des prix à la consommation harmonisés insee IPCH-2015 2024-11-22 2024-11-22
Indice des prix dans la grande distribution insee IPGD-2015 2024-11-21 2024-11-21
Indices des prix des logements neufs et Indices Notaires-Insee des prix des logements anciens insee IPLA-IPLNA-2015 2024-11-09 2024-11-22
Indices de prix de production et d'importation dans l'industrie insee IPPI-2015 2024-11-21 2024-11-22
Indice pour la révision d’un loyer d’habitation insee IRL 2024-11-09 2024-11-22
Variation des loyers insee SERIES_LOYERS 2024-11-09 2024-11-22
Consommation effective des ménages par fonction insee T_CONSO_EFF_FONCTION 2024-11-09 2024-07-18

LAST_COMPILE

LAST_COMPILE
2024-11-22

LAST_UPDATE

Code
`IPCH-2015` %>%
  group_by(LAST_UPDATE) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(LAST_UPDATE)) %>%
  print_table_conditional()
LAST_UPDATE Nobs
2024-11-15 135258
2024-08-13 1
2024-02-16 11354
2024-01-12 10896
2021-02-19 23
2021-01-15 325
2019-02-22 48
2019-01-15 299
2017-01-12 273
2016-02-22 520
2016-02-18 1211

Last

Code
`IPCH-2015` %>%
  group_by(TIME_PERIOD, FREQ) %>%
  summarise(Nobs = n()) %>%
  group_by(FREQ) %>%
  filter(TIME_PERIOD == max(TIME_PERIOD)) %>%
  print_table_conditional()
TIME_PERIOD FREQ Nobs
2024 A 417
2024-10 M 417

Definitions

  • Moyenne annuelle: l’évolution en moyenne annuelle compare les prix d’une année donnée à ceux de l’année précédente.

  • Glissement annuel: l’évolution en glissement annuel compare les prix d’un seul mois d’une année donnée à ceux du même mois de l’année précédente.

TITLE_FR

Code
`IPCH-2015` %>%
  group_by(TITLE_FR, IDBANK) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional

COICOP2016

All

Code
`IPCH-2015` %>%
  left_join(COICOP2016,  by = "COICOP2016") %>%
  group_by(COICOP2016, Coicop2016) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional

2-digit

Code
`IPCH-2015` %>%
  filter(nchar(COICOP2016) == 2) %>%
  left_join(COICOP2016,  by = "COICOP2016") %>%
  group_by(COICOP2016, Coicop2016) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
COICOP2016 Coicop2016 Nobs
00 00 - Ensemble 737
01 01 - Produits alimentaires et boissons non alcoolisées 403
02 02 - Boissons alcoolisées, tabac et stupéfiants 403
03 03 - Articles d'habillement et chaussures 403
04 04 - Logement, eau, gaz, électricité et autres combustibles 403
05 05 - Meubles, articles de ménage et entretien courant du foyer 403
06 06 - Santé 403
07 07 - Transports 403
08 08 - Communications 403
09 09 - Loisirs et culture 403
10 10 - Enseignement 403
11 11 - Restaurants et hôtels 403
12 12 - Biens et services divers 403

INDICATEUR

Code
`IPCH-2015` %>%
  left_join(INDICATEUR,  by = "INDICATEUR") %>%
  group_by(INDICATEUR, Indicateur) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
INDICATEUR Indicateur Nobs
IPCH Indice des prix à la consommation harmonisé (IPCH) 160208

FREQ

Code
`IPCH-2015` %>%
  left_join(FREQ, by = "FREQ") %>%
  group_by(FREQ, Freq) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional
FREQ Freq Nobs
A Annual 22622
M Monthly 137586

NATURE

Code
`IPCH-2015` %>%
  left_join(NATURE,  by = "NATURE") %>%
  group_by(NATURE, Nature) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
NATURE Nature Nobs
INDICE Indice 148343
POND Pondérations d'indice 11531
GLISSEMENT_ANNUEL Glissement annuel 334

REF_AREA

Code
`IPCH-2015` %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  group_by(REF_AREA, Ref_area) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
REF_AREA Ref_area Nobs
FE France 160208

TITLE_FR

Code
`IPCH-2015` %>%
  group_by(TITLE_FR, IDBANK) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional

TIME_PERIOD

Code
`IPCH-2015` %>%
  group_by(TIME_PERIOD) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(TIME_PERIOD)) %>%
  print_table_conditional

00 - Ensemble

Glissement annuel

Code
`IPCH-2015` %>%
  filter(NATURE == "GLISSEMENT_ANNUEL") %>%
  month_to_date %>%
  ggplot(.) + ylab("Glissement annuel (%)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/100)) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 10, 1),
                     labels = percent_format())

IPCH Ensemble

IPCH-IPC-2015-ensemble

Code
`IPCH-IPC-2015-ensemble` %>%
  group_by(INDICATEUR) %>%
  summarise(First_value = first(OBS_VALUE),
            First_date = first(date),
            Last_value = last(OBS_VALUE),
            Last_date = last(date)) %>%
  print_table_conditional()
INDICATEUR First_value First_date Last_value Last_date
IPC 100 1996-01-01 157.8123 2024-10-01
IPCH 100 1996-01-01 166.7206 2024-10-01

5 dernières années

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  year_to_date %>%
  filter(date >= Sys.Date() - years(7)) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE)-1) %>%
  select(date, OBS_VALUE, Indicateur) %>%
  na.omit %>%
  ggplot(.) + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  #
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 10, 1),
                     labels = percent_format()) +
  geom_text_repel(aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)), 
                  fontface ="plain", color = "black", size = 3)

10 dernières années

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  year_to_date %>%
  filter(date >= Sys.Date() - years(12)) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE)-1) %>%
  select(date, OBS_VALUE, Indicateur) %>%
  na.omit %>%
  ggplot(.) + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  #
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 10, 1),
                     labels = percent_format()) +
  geom_text_repel(aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)), 
                  fontface ="plain", color = "black", size = 3)

2000-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  year_to_date %>%
  filter(date >= as.Date("2000-01-01")) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE)-1) %>%
  select(date, OBS_VALUE, Indicateur) %>%
  na.omit %>%
  ggplot(.) + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  #
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 10, 1),
                     labels = percent_format()) +
  geom_text_repel(aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)), 
                  fontface ="plain", color = "black", size = 3)

15 dernières années

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  year_to_date %>%
  filter(date >= Sys.Date() - years(17)) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE)-1) %>%
  select(date, OBS_VALUE, Indicateur) %>%
  na.omit %>%
  ggplot(.) + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  #
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 10, 1),
                     labels = percent_format()) +
  geom_text_repel(aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)), 
                  fontface ="plain", color = "black", size = 3)

2017-

Monthly

Code
`IPCH-IPC-2015-ensemble` %>%
  filter(date >= as.Date("2017-01-01")) %>%
  group_by(Indicateur) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>% tail(1), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)))

2020-

Monthly

Code
`IPCH-IPC-2015-ensemble` %>%
  filter(date >= as.Date("2019-05-01")) %>%
  group_by(Indicateur) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) %>% 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(10, 300, 1),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>%
               filter(date == max(date)), aes(date, y = OBS_VALUE, label = round(OBS_VALUE, 1)))

2021

Monthly

Code
`IPCH-IPC-2015-ensemble` %>%
  filter(date >= as.Date("2021-01-01")) %>%
  group_by(Indicateur) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) %>% 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(10, 300, 1),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>%
               filter(date == max(date)), aes(date, y = OBS_VALUE, label = round(OBS_VALUE, 1)))

5 years before

Monthly

Code
`IPCH-IPC-2015-ensemble` %>%
  filter(date >= as.Date("2018-11-01"),
         date <= as.Date("2023-11-01")) %>%
  group_by(Indicateur) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) %>% 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(10, 300, 1),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>%
               filter(date == max(date)), aes(date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Indicateur))

3 years before

Monthly

Code
`IPCH-IPC-2015-ensemble` %>%
  filter(date >= as.Date("2021-06-01")) %>%
  group_by(Indicateur) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) %>% 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(10, 300, 1),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>%
               filter(date == max(date)), aes(date, y = OBS_VALUE, label = round(OBS_VALUE, 1)))

1999-

Monthly - IPC and IPCH

Code
`IPCH-IPC-2015-ensemble` %>%
  filter(year(date) >= 1999) %>%
  group_by(Indicateur) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1999, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>%
               filter(date == max(date) | date == as.Date("2021-01-01")), aes(date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Indicateur))

2008-

Monthly - IPC and IPCH

Code
`IPCH-IPC-2015-ensemble` %>%
  filter(date >+ as.Date("2008-01-01")) %>%
  group_by(Indicateur) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>%
               filter(date == max(date)), aes(date, y = OBS_VALUE, label = round(OBS_VALUE, 1)))

1996-

Monthly - IPC and IPCH

Code
`IPCH-IPC-2015-ensemble` %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>%
               filter(date == max(date)), aes(date, y = OBS_VALUE, label = round(OBS_VALUE, 1)))

With labels
Code
`IPCH-IPC-2015-ensemble` %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_text_repel(data = . %>% filter(month(date) == 12),
                  aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), 
                  fontface ="plain", color = "black", size = 3)

Monthly - IPCH / IPC

Normal
1999-
Code
`IPCH-IPC-2015-ensemble` %>%
  select(date, INDICATEUR, OBS_VALUE) %>%
  spread(INDICATEUR, OBS_VALUE) %>%
  mutate(OBS_VALUE = 100*IPCH/IPC) %>%
  filter(date >= as.Date("1999-01-01")) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Ratio IPCH/IPC") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE)) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1),
                     labels = dollar_format(accuracy = 1, prefix = ""))

1996-
Code
`IPCH-IPC-2015-ensemble` %>%
  select(date, INDICATEUR, OBS_VALUE) %>%
  spread(INDICATEUR, OBS_VALUE) %>%
  mutate(OBS_VALUE = 100*IPCH/IPC) %>%
  ggplot() + ylab("Ratio IPCH/IPC") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE)) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Inverted
1996-
Code
`IPCH-IPC-2015-ensemble` %>%
  select(date, INDICATEUR, OBS_VALUE) %>%
  spread(INDICATEUR, OBS_VALUE) %>%
  mutate(OBS_VALUE = 100*IPC/IPCH) %>%
  ggplot() + ylab("Ratio IPC/IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE)) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1),
                     labels = dollar_format(accuracy = 1, prefix = ""))

1999-
Code
`IPCH-IPC-2015-ensemble` %>%
  select(date, INDICATEUR, OBS_VALUE) %>%
  spread(INDICATEUR, OBS_VALUE) %>%
  mutate(OBS_VALUE = 100*IPC/IPCH) %>%
  filter(date >= as.Date("1999-01-01")) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Ratio IPC/IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE)) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Annual

No labels
1996-
Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  year_to_date %>%
  filter(date >= as.Date("1996-01-01")) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>% filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Indicateur))

2008-2022
Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  year_to_date %>%
  filter(date >= as.Date("2008-01-01"),
         date <= as.Date("2022-01-01")) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2008-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>% filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Indicateur))

2008-2021
Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  year_to_date %>%
  filter(date >= as.Date("2008-01-01"),
         date <= as.Date("2021-01-01")) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2008-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 300, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>% filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Indicateur))

2009-2021
Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  year_to_date %>%
  filter(date >= as.Date("2008-01-01"),
         date <= as.Date("2021-01-01")) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2008-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 300, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>% filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 2), color = Indicateur))

1999-
Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  year_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1999-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1999, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

labels
France Entière

1996-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  year_to_date %>%
  filter(date >= as.Date("1996-01-01")) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), 
                  fontface ="plain", color = "black", size = 3)

1999-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  year_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1999-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1999, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), 
                  fontface ="plain", color = "black", size = 3)

France Métropolitaine
Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FM",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  year_to_date %>%
  filter(date >= as.Date("1996-01-01")) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), 
                  fontface ="plain", color = "black", size = 3)

Avec hors tabac
Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00", "SO"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO" | PRIX_CONSO == "4018") %>%
  year_to_date %>%
  filter(date >= as.Date("1996-01-01")) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur, linetype = COICOP2016)) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), 
                  fontface ="plain", color = "black", size = 3)

France Métropolitaine
Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FM",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO" | PRIX_CONSO == "4018") %>%
  year_to_date %>%
  filter(date >= as.Date("1996-01-01")) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), 
                  fontface ="plain", color = "black", size = 3)

Annual - Growth

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  year_to_date %>%
  filter(date >= as.Date("1996-01-01")) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")],
         OBS_VALUE = OBS_VALUE/lag(OBS_VALUE)-1) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  #
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 10, 1),
                     labels = percent_format())

1990-

Quarterly

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Annual

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "A",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ungroup %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1990-01-01")]) %>%
  
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Inflation sur un an

3 dernières années

Code
Sys.setlocale("LC_TIME", "fr_CA.UTF-8")
# [1] "fr_CA.UTF-8"
Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 12)-1) %>%
  filter(date >= Sys.Date() - years(3)) %>%
  select(date, OBS_VALUE, Indicateur) %>%
  na.omit %>%
  ggplot() + ylab("Inflation sur un an (IPC, IPCH)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = "2 months",
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.5, 0.2),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = "")) +
  geom_text_repel(aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)), 
                  fontface ="plain", color = "black", size = 3)

2 dernières années

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 12)-1) %>%
  filter(date >= Sys.Date() - years(2)) %>%
  select(date, OBS_VALUE, Indicateur) %>%
  na.omit %>%
  ggplot() + ylab("Inflation sur un an (IPC, IPCH)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = "1 month",
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.65, 0.2),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = "")) +
  geom_text_repel(aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)), 
                  fontface ="plain", color = "black", size = 3)

2020-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("2021-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 12)-1) %>%
  select(date, OBS_VALUE, Indicateur) %>%
  na.omit %>%
  ggplot() + ylab("Inflation sur un an (IPC, IPCH)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = "1 month",
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.65, 0.2),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = "")) +
  geom_text_repel(aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)), 
                  fontface ="plain", color = "black", size = 3)

2011-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("2011-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 12)-1) %>%
  select(date, OBS_VALUE, Indicateur) %>%
  na.omit %>%
  ggplot() + ylab("Inflation sur un an (IPC, IPCH)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

1996-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 12)-1) %>%
  ggplot() + ylab("Inflation sur un an (IPC, IPCH)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

1990-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1990-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 12)-1) %>%
  ggplot() + ylab("Inflation sur un an (IPC, IPCH)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

Inflation sur 2 ans

Par an

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = (OBS_VALUE/lag(OBS_VALUE, 24))^(1/2)-1) %>%
  ggplot() + ylab("Inflation annuelle sur 2 ans (IPC, IPCH)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 0.5),
                     labels = percent_format(accuracy = .1, prefix = ""))

Sur 2 ans

Tous

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = (OBS_VALUE/lag(OBS_VALUE, 24))-1) %>%
  ggplot() + ylab("Inflation annuelle sur 2 ans (IPC, IPCH)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 1),
                     labels = percent_format(accuracy = .1, prefix = ""))

2020-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = (OBS_VALUE/lag(OBS_VALUE, 24))-1) %>%
  filter(date >= as.Date("2021-01-01")) %>%
  ggplot() + ylab("Inflation sur 2 ans (IPC, IPCH)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.28, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 1),
                     labels = percent_format(accuracy = .1, prefix = "")) + 
  geom_text(data = . %>%
              filter(month(date) %in% c(1, 4, 7, 10)), aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)))

2020- (3 ans )

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("00"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
         is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = (OBS_VALUE/lag(OBS_VALUE, 36))-1) %>%
  filter(date >= as.Date("2021-01-01")) %>%
  ggplot() + ylab("Inflation sur 3 ans (IPC, IPCH)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.28, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 300, 1),
                     labels = percent_format(accuracy = .1, prefix = "")) + 
  geom_text(data = . %>%
              filter(month(date) %in% c(1, 4, 7, 10)), aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)))

041 Loyers effectifs, 00 Ensemble

1996-

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         COICOP2016 %in% c("041", "00"),
         FREQ == "M",
         NATURE == "INDICE") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  group_by(Coicop2016) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.75, 0.3),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(0, 200, 10),
                     labels = dollar_format(accuracy = 1, prefix = ""))

1999-

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         COICOP2016 %in% c("041", "00"),
         FREQ == "M",
         NATURE == "INDICE") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  group_by(Coicop2016) %>%
  filter(date >= as.Date("1999-01-01")) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1999-01-01")]) %>%
  ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  
  scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.75, 0.3),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Glissement sur 2 ans

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         COICOP2016 %in% c("041", "00"),
         FREQ == "M",
         NATURE == "INDICE") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  filter(date >= max(date) - years(2)) %>%
  group_by(COICOP2016) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = "1 month",
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.28, 0.87),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
  scale_y_log10(breaks = seq(0, 200, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), 
                  fontface ="plain", color = "black", size = 3)

Alimentation, ensemble, Tabac

Janvier 2021

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         COICOP2016 %in% c( "00", "01", "022"),
         FREQ == "M",
         NATURE == "INDICE") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  filter(date >= as.Date("2021-01-01")) %>%
  group_by(COICOP2016) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = "2 months",
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.28, 0.87),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
  scale_y_log10(breaks = seq(0, 200, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>% filter(date == max(date)),
                  aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2016), 
                  fontface ="plain", size = 3)

Alimentation, ensemble

Janvier 2021

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         COICOP2016 %in% c( "00", "01"),
         FREQ == "M",
         NATURE == "INDICE") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  filter(date >= as.Date("2021-01-01")) %>%
  group_by(COICOP2016) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  theme_minimal() + xlab("") + ylab("100 = Janvier 2021") +
  scale_x_date(breaks = "2 months",
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.28, 0.87),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
  scale_y_log10(breaks = seq(0, 200, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>% filter(date == max(date)),
                  aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2016), 
                  fontface ="plain", size = 3)

Alimentation, loyers, chauffage, Ensemble

Janvier 2021

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         COICOP2016 %in% c("041", "00", "01", "045"),
         FREQ == "M",
         NATURE == "INDICE") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  filter(date >= as.Date("2021-01-01")) %>%
  group_by(COICOP2016) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = "2 months",
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.28, 0.87),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
  scale_y_log10(breaks = seq(0, 200, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_text_repel(data = . %>% filter(date == max(date)),
                  aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), 
                  fontface ="plain", color = "black", size = 3)

Juillet 2021

Code
`IPC-2015` %>%
  filter(INDICATEUR == "IPC",
         COICOP2016 %in% c("00", "01", "045"),
         FREQ == "M",
         NATURE == "INDICE",
         PRIX_CONSO == "SO",
         MENAGES_IPC == "ENSEMBLE",
         REF_AREA == "FE") %>%
  month_to_date %>%
  arrange(date) %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  filter(date >= as.Date("2019-07-01"),
         date <= as.Date("2024-07-01")) %>%
  group_by(COICOP2016) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = "2 months",
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.28, 0.87),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>% filter(date == max(date)),
                  aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2016), 
                  fontface ="plain", size = 3)

Glissement sur 2 ans

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         COICOP2016 %in% c("041", "00", "01", "045"),
         FREQ == "M",
         NATURE == "INDICE") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  filter(date >= max(date) - years(2)) %>%
  group_by(COICOP2016) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = "1 month",
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.28, 0.87),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
  scale_y_log10(breaks = seq(0, 200, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), 
                  fontface ="plain", color = "black", size = 3)

Electricité, Gaz, Electricité + gaz

Mai 2017

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         COICOP2016 %in% c("0452", "0451", "045"),
         FREQ == "M",
         NATURE == "INDICE") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  filter(date >= as.Date("2017-05-01"),
         date <= as.Date("2024-07-01")) %>%
  group_by(COICOP2016) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix (Juillet 2021 = 100)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  scale_x_date(breaks = "3 months",
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.25, 0.87),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
  scale_y_log10(breaks = seq(0, 10000, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>% filter(date == max(date)),
                  aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2016), 
                  fontface ="plain", size = 3)

Janvier 2019

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         COICOP2016 %in% c("0452", "0451", "045"),
         FREQ == "M",
         NATURE == "INDICE") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  filter(date >= as.Date("2020-01-01"),
         date <= as.Date("2024-07-01")) %>%
  group_by(COICOP2016) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix (Juillet 2021 = 100)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  scale_x_date(breaks = "2 months",
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.25, 0.87),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>% filter(date == max(date)),
                  aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2016), 
                  fontface ="plain", size = 3)

Juillet 2021

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         COICOP2016 %in% c("0452", "0451", "045"),
         FREQ == "M",
         NATURE == "INDICE") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  filter(date >= as.Date("2021-07-01"),
         date <= as.Date("2024-07-01")) %>%
  group_by(COICOP2016) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix (Juillet 2021 = 100)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  scale_x_date(breaks = "2 months",
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.25, 0.87),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>% filter(date == max(date)),
                  aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2016), 
                  fontface ="plain", size = 3)

3 ans

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         COICOP2016 %in% c("0452", "0451", "045"),
         FREQ == "M",
         NATURE == "INDICE") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  filter(date >= max(date) - years(3)) %>%
  group_by(COICOP2016) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix (Il y a 3 ans = 100)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  scale_x_date(breaks = "2 months",
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.25, 0.87),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>% filter(date == max(date)),
                  aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2016), 
                  fontface ="plain", size = 3)

Pondérations d’indice

Table - COICOP2016

All

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         REF_AREA == "FE",
         NATURE == "POND",
         TIME_PERIOD %in% c("1990", "2000", "2010", "2020")) %>%
  left_join(COICOP2016,  by = "COICOP2016") %>%
  select(COICOP2016, Coicop2016, TIME_PERIOD, OBS_VALUE) %>%
  spread(TIME_PERIOD, OBS_VALUE) %>%
  print_table_conditional

2-digit

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         REF_AREA == "FE",
         NATURE == "POND",
         TIME_PERIOD %in% c("1990", "2000", "2010", "2020"),
         nchar(COICOP2016) == 2) %>%
  left_join(COICOP2016,  by = "COICOP2016") %>%
  select(COICOP2016, Coicop2016, TIME_PERIOD, OBS_VALUE) %>%
  spread(TIME_PERIOD, OBS_VALUE) %>%
  print_table_conditional
COICOP2016 Coicop2016 2000 2010 2020
00 00 - Ensemble 10000 10000 10000
01 01 - Produits alimentaires et boissons non alcoolisées 1695 1603 1592
02 02 - Boissons alcoolisées, tabac et stupéfiants 412 357 442
03 03 - Articles d'habillement et chaussures 588 531 439
04 04 - Logement, eau, gaz, électricité et autres combustibles 1481 1467 1567
05 05 - Meubles, articles de ménage et entretien courant du foyer 705 674 545
06 06 - Santé 317 445 430
07 07 - Transports 1802 1759 1735
08 08 - Communications 273 330 276
09 09 - Loisirs et culture 931 992 815
10 10 - Enseignement 57 58 41
11 11 - Restaurants et hôtels 870 740 899
12 12 - Biens et services divers 869 1044 1219

Santé, Assurance santé complémentaire

All

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         COICOP2016 %in% c("06", "1253"),
         REF_AREA == "FE",
         NATURE == "POND") %>%
  year_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  mutate(OBS_VALUE = OBS_VALUE/10000) %>%
  ggplot() + ylab("Poids de la santé dans l'IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 20, 0.5),
                     labels = percent_format(accuracy = .1))

Creche, cantine

All

Code
`IPCH-2015` %>%
  filter(INDICATEUR == "IPCH",
         COICOP2016 %in% c("1112", "12401"),
         REF_AREA == "FE",
         NATURE == "POND") %>%
  year_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  mutate(OBS_VALUE = OBS_VALUE/10000) %>%
  ggplot() + ylab("Poids dans l'IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 20, 0.5),
                     labels = percent_format(accuracy = .1))

IPC VS IPCH

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("1112", "12401"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération - IPC vs. IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color =  Coicop2016, linetype = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.55),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .1),
                     labels = percent_format(accuracy = .1))

2-digit

Boissons Alcoolisées, Logement, Restaurants et hôtels

Code
`IPCH-2015` %>%
  filter(COICOP2016 %in% c("00", "02", "11", "04"),
         NATURE == "INDICE",
         FREQ == "M") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  group_by(COICOP2016) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = c(100, 120, 150, 200, 220, 250, 300, 400, 500),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Transports, Enseignement, B&S Divers

Code
`IPCH-2015` %>%
  filter(COICOP2016 %in% c("00", "10", "07", "12"),
         NATURE == "INDICE",
         FREQ == "M") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  group_by(COICOP2016) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(100, 300, 10),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Alimentation, Habillement, Meubles

Code
`IPCH-2015` %>%
  filter(COICOP2016 %in% c("00", "05", "01", "03"),
         NATURE == "INDICE",
         FREQ == "M") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  group_by(COICOP2016) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(100, 300, 10),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Santé, Communications, Loisirs

Code
`IPCH-2015` %>%
  filter(COICOP2016 %in% c("00", "06", "09", "08"),
         NATURE == "INDICE",
         FREQ == "M") %>%
  month_to_date %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  group_by(COICOP2016) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2016)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 10),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Comparatif Pondérations IPC et IPCH

Santé

06 - Santé et 1253 - Assurances santé

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("06", "1253"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération - Santé") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color =  Coicop2016, linetype = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.6),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 1),
                     labels = percent_format(accuracy = 1))

Santé

06 - Santé

Code
plot_sante_ponderation <- `IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("06"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération, 06 - Santé") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.55),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 1),
                     labels = percent_format(accuracy = 1))

plot_sante_ponderation

061 - Produits médicaux

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("061"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération, 061 - Produits médicaux") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.55),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 1),
                     labels = percent_format(accuracy = 1))

062 - Services médicaux

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("062"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération, 062 - Services médicaux") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.55),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 1),
                     labels = percent_format(accuracy = 1))

0611 - Produits pharmaceutiques

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0611"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération, 0611 - Produits pharmaceutiques") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.55),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 1),
                     labels = percent_format(accuracy = 1))

0612 - Produits médicaux divers

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0612"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération des produits médicaux divers l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .1),
                     labels = percent_format(accuracy = .1))

0613 - Appareils et matériel thérapeutiques

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0613"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération des Appareils et matériel thérapeutiques l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.55),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .1),
                     labels = percent_format(accuracy = .1))

0621 - Services médicaux

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0621"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération des Appareils et matériel thérapeutiques l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.55),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .1),
                     labels = percent_format(accuracy = .1))

0622 - Services médicaux

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0622"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération des Appareils et matériel thérapeutiques l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.55),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .1),
                     labels = percent_format(accuracy = .1))

0623 - Services paramédicaux

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0623"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération des Appareils et matériel thérapeutiques l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.55),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .1),
                     labels = percent_format(accuracy = .1))

Enseignement

10,

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("10", "101", "102", "104"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  left_join(COICOP2016, by = "COICOP2016") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color =  Coicop2016, linetype = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .1),
                     labels = percent_format(accuracy = .1))

10 - Enseignement

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("10"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération de l'Enseignement dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.28, 0.95),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .1),
                     labels = percent_format(accuracy = .1))

101 - Enseignement Primaire

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("101"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération de l'Enseignement Primaire dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.28, 0.95),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .01),
                     labels = percent_format(accuracy = .01))

102 - Enseignement Secondaire

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("102"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération de l'Enseignement Secondaire dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.28, 0.95),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .02),
                     labels = percent_format(accuracy = .01))

104 - Enseignement Supérieur

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("104"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération de l'Enseignement Supérieur dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.28, 0.95),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .02),
                     labels = percent_format(accuracy = .01))

09 - Loisirs et culture

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("09"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération de la Santé dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .5),
                     labels = percent_format(accuracy = .1))

05 - Meubles en entretien

All

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("05"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération de 05 dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .5),
                     labels = percent_format(accuracy = .1))

05.6.2 - Services domestiques et services ménagers

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0562"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération de 05 dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .1),
                     labels = percent_format(accuracy = .1))

01 - Produits alimentaires

All

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("01"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération de l'Alimentation dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .5),
                     labels = percent_format(accuracy = .1)) +
  geom_text_repel(aes(x = date, y = OBS_VALUE/10000, label = percent(OBS_VALUE/10000, acc = 0.1)), 
                  fontface ="plain", color = "black", size = 3)

1996-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("01"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération de l'Alimentation dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .5),
                     labels = percent_format(accuracy = .1)) +
  geom_text_repel(aes(x = date, y = OBS_VALUE/10000, label = percent(OBS_VALUE/10000, acc = 0.1)), 
                  fontface ="plain", color = "black", size = 3)

2010-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("01"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("2010-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération de l'Alimentation dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .5),
                     labels = percent_format(accuracy = .1)) +
  geom_text_repel(aes(x = date, y = OBS_VALUE/10000, label = percent(OBS_VALUE/10000, acc = 0.1)), 
                  fontface ="plain", color = "black", size = 3)

02 - Boissons

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("02"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération de l'Alimentation dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .5),
                     labels = percent_format(accuracy = .1))

11 - Restaurants

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("11"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.15),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .5),
                     labels = percent_format(accuracy = .1))

1112 - Cantines

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("1112"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.15),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .1),
                     labels = percent_format(accuracy = .1))

03 - Habillement

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("03"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération de l'Habillement dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .5),
                     labels = percent_format(accuracy = .1))

04 - Logement

04 - Logement

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("04"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération du Logement dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, 1),
                     labels = percent_format(accuracy = 1)) +
  geom_text_repel(aes(x = date, y = OBS_VALUE/10000, label = percent(OBS_VALUE/10000, acc = 0.1)), 
                  fontface ="plain", color = "black", size = 3)

041 - Loyers

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("041"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération des Loyers dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .2),
                     labels = percent_format(accuracy = .1)) +
  geom_text_repel(aes(x = date, y = OBS_VALUE/10000, label = percent(OBS_VALUE/10000, acc = 0.1)), 
                  fontface ="plain", color = "black", size = 3)

07 - Transports

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("07"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération des Transports dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .5),
                     labels = percent_format(accuracy = .1))

08 - Communications

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("08"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération des Communications dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .2),
                     labels = percent_format(accuracy = .1))

12

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("12"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondérationdans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .2),
                     labels = percent_format(accuracy = .1))

12.4 - Protection sociale

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("124"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondérationdans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .2),
                     labels = percent_format(accuracy = .1))

12.4.0.1 - Services de garde d’enfants

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("12401"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondérationdans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .2),
                     labels = percent_format(accuracy = .1))

12.4.0.2 - Maisons de retraite pour personnes âgées et foyers pour handicapés

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("12402"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondérationdans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .2),
                     labels = percent_format(accuracy = .1))

12.4.0.3 - Aides à domicile

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("12403"),
         NATURE == "POND",
         REF_AREA == "FE",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  year_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  ggplot() + ylab("Pondération dans l'IPC, IPCH") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/10000, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 300, .2),
                     labels = percent_format(accuracy = .1))

Comparatif IPC et IPCH

Santé

La principale différence entre l’IPCH et l’IPC porte sur les dépenses de santé : l’IPCH suit des prix nets des remboursements de la sécurité sociale tandis que l’IPC suit des prix bruts.

06 - Santé

All

Code
plot_sante <- `IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("06"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice de prix - Santé (100 = 1996)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.55),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

plot_sante

Bind

Code
ggarrange(plot_sante_ponderation, plot_sante, common.legend = T)

2018-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("06"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("2018-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2018-01-01")]) %>%
  ggplot() + ylab("06 - Santé") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1),
                     labels = dollar_format(accuracy = 1, prefix = ""))

2020-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("06"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("2020-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2020-01-01")]) %>%
  ggplot() + ylab("06 - Santé") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), as.Date("2024-01-01"), "3 months"),
               labels = date_format("%b %y")) +
  theme(legend.position = c(0.4, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1),
                     labels = dollar_format(accuracy = 1, prefix = ""))

061 - Produits, appareils et matériels médicaux

All

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("061"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("061 - Produits, appareils et matériels médicaux") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.55),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

2018-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("061"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("2018-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2018-01-01")]) %>%
  ggplot() + ylab("061 - Produits, appareils et matériels médicaux") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1),
                     labels = dollar_format(accuracy = 1, prefix = ""))

2020-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("061"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("2020-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2020-01-01")]) %>%
  ggplot() + ylab("061 - Produits, appareils et matériels médicaux") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), as.Date("2024-01-01"), "3 months"),
               labels = date_format("%b %y")) +
  theme(legend.position = c(0.3, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1),
                     labels = dollar_format(accuracy = 1, prefix = ""))

062 - Services ambulatoires

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("062"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2000-01-01")]) %>%
  ggplot() + ylab("Indice des prix de la Santé") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.55),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

0611 - Produits pharmaceutiques

All

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0611"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("0611 - Produits pharmaceutiques") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.55),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

2018-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0611"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("2018-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2018-01-01")]) %>%
  ggplot() + ylab("0611 - Produits pharmaceutiques") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1),
                     labels = dollar_format(accuracy = 1, prefix = ""))

2020-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0611"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("2020-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2020-01-01")]) %>%
  ggplot() + ylab("0611 - Produits pharmaceutiques") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), as.Date("2024-01-01"), "3 months"),
               labels = date_format("%b %y")) +
  theme(legend.position = c(0.7, 0.9),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1),
                     labels = dollar_format(accuracy = 1, prefix = ""))

0612 - Produits médicaux divers

All

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0612"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("0612 - Indice des prix des produits médicaux divers") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = paste0(Indicateur, "- Produits médicaux divers"))) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.25),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

2018-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0612"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("2018-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2018-01-01")]) %>%
  ggplot() + ylab("0612 - Indice des prix des produits médicaux divers") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = paste0(Indicateur, " - Produits médicaux divers"))) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.25),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

2020-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0612"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("2020-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2020-01-01")]) %>%
  ggplot() + ylab("0612 - Indice des prix des produits médicaux divers") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = paste0(Indicateur, " - Produits médicaux divers"))) +
  
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), as.Date("2024-01-01"), "3 months"),
               labels = date_format("%b %y")) +
  theme(legend.position = c(0.4, 0.25),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

0613 - Appareils et matériel thérapeutiques

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0613"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2000-01-01")]) %>%
  ggplot() + ylab("Indice des prix des appareils et matériel thérapeutique") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

0621 - Services médicaux

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0621"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2000-01-01")]) %>%
  ggplot() + ylab("Indice des prix des Services médicaux") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

0622 - Services dentaires

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0622"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2000-01-01")]) %>%
  ggplot() + ylab("Indice des prix des Services médicaux") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

0623 - Services paramédicaux

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0623"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2000-01-01")]) %>%
  ggplot() + ylab("Indice des prix des Services paramédicaux") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Enseignement

10 - Enseignement

All

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("10"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix, Enseignement") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

2002-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("10"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("2002-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix, Enseignement") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

101 - Enseignement primaire

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("101"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix, Enseignement") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

102 - Enseignement Secondaire

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("102"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix, Enseignement") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

104 - Enseignement Supérieur

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("104"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des prix, Enseignement") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

09 - Loisirs et culture

Tous

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("09"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Loisirs et Culture") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

094231

All

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("09423"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, redevances (Redevance audiviosuelle)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% 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(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

2015-

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("09423"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("2015-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2015-01-01")]) %>%
  ggplot() + ylab("Indice des prix, redevances (Redevance audiviosuelle)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  scale_x_date(breaks = seq(1920, 2100, 1) %>% 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(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

05 - Meubles, articles de ménage et entretien courant du foyer

All

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("05"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("05 - Meubles, articles de ménage et entretien courant du foyer") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% 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(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

05.6.2 - Services domestiques et services ménagers

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("0562"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1998-01-01")]) %>%
  ggplot() + ylab("05.6.2 - Services domestiques et services ménagers") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% 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(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

05.6.2.1 - Services domestiques fournis par du personnel salarié

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("05621"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1998-01-01")]) %>%
  ggplot() + ylab("05621") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

01 - Produits alimentaires

Indice

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("01"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Glissement annuel

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("01"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 12)-1) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-10, 40, 2),
                     labels = percent_format(accuracy = 1, prefix = ""))

02 - Boissons alcolisées

Indice

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("02"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Boissons") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Glissement annuel

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("02"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 12)-1) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-10, 40, 2),
                     labels = percent_format(accuracy = 1, prefix = ""))

11 - Restaurants

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("11"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Restaurants") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Cantines

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("1112"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1998-01-01")]) %>%
  ggplot() + ylab("Cantines") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% 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(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

03 - Habillement et chaussures

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("03"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Habillement") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

04 - Logement

All

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("04"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Logement") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

041 - loyers

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("041"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Logement") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

07 - Transports

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("07"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Transports") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

08 - Communications

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("08"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("Indice des prix, Communications") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

12 - Biens et services divers

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("12"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.2),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

12.4 - Protection sociale

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("124"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% 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(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

12401 - crèche (dans protection sociale)

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("12401"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% 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(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

1253 - Assurance santé complémentaire

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("1253"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% 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(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

12.4.0.2 - Maisons de retraite pour personnes âgées et foyers pour handicapés

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("12402"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% 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(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

12.4.0.3 - Aides à domicile

Code
`IPCH-2015` %>%
  bind_rows(`IPC-2015`) %>%
  filter(COICOP2016 %in% c("12403"),
         NATURE == "INDICE",
         REF_AREA == "FE",
         FREQ == "M",
         is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE") %>%
  month_to_date %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) %>% 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(10, 300, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))