Prix moyens de vente de détail

Data - INSEE

Info

source dataset .html .RData
insee IPC-PM-2015 2024-12-22 2024-12-22
insee t_5203 2024-11-22 2021-12-02

Données sur l’inflation en France

source dataset .html .RData
insee bdf2017 2024-12-22 2023-11-21
insee ILC-ILAT-ICC 2024-12-22 2024-12-22
insee INDICES_LOYERS 2024-12-22 2024-12-22
insee IPC-1970-1980 2024-12-22 2024-12-22
insee IPC-1990 2024-12-22 2024-12-22
insee IPC-2015 2024-12-22 2024-12-22
insee IPC-PM-2015 2024-12-22 2024-12-22
insee IPCH-2015 2024-12-22 2024-12-22
insee IPGD-2015 2024-12-22 2024-12-22
insee IPLA-IPLNA-2015 2024-11-22 2024-12-22
insee IPPI-2015 2024-12-22 2024-12-22
insee IRL 2024-11-22 2024-12-22
insee SERIES_LOYERS 2024-11-22 2024-12-22
insee T_CONSO_EFF_FONCTION 2024-11-22 2024-07-18

Data on inflation

source dataset .html .RData
bis CPI 2024-07-01 2022-01-20
ecb CES 2024-12-22 2024-12-22
eurostat nama_10_co3_p3 2024-12-14 2024-12-14
eurostat prc_hicp_cow 2024-11-22 2024-10-08
eurostat prc_hicp_ctrb 2024-11-22 2024-10-08
eurostat prc_hicp_inw 2024-11-05 2024-11-23
eurostat prc_hicp_manr 2024-12-22 2024-12-22
eurostat prc_hicp_midx 2024-11-01 2024-12-22
eurostat prc_hicp_mmor 2024-11-22 2024-11-23
eurostat prc_ppp_ind 2024-11-22 2024-10-08
eurostat sts_inpp_m 2024-06-24 2024-12-22
eurostat sts_inppd_m 2024-12-22 2024-12-22
eurostat sts_inppnd_m 2024-06-24 2024-12-22
fred cpi 2024-12-22 2024-12-22
fred inflation 2024-12-22 2024-12-22
imf CPI 2024-06-20 2020-03-13
oecd MEI_PRICES_PPI 2024-09-15 2024-04-15
oecd PPP2017 2024-04-16 2023-07-25
oecd PRICES_CPI 2024-04-16 2024-04-15
wdi FP.CPI.TOTL.ZG 2023-01-15 2024-09-18
wdi NY.GDP.DEFL.KD.ZG 2024-09-18 2024-09-18

LAST_COMPILE

LAST_COMPILE
2024-12-22

LAST_UPDATE

Code
`IPC-PM-2015` %>%
  group_by(LAST_UPDATE) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
LAST_UPDATE Nobs
2024-12-13 19473
2016-01-13 6872
2020-01-15 6688
2020-08-28 1974
2004-03-05 1519
2024-01-12 1413
2017-01-12 1053
2022-01-14 624
2010-01-18 372
2021-02-26 336
2011-09-13 280
2019-01-15 273
2012-01-12 240
2018-01-12 240
2006-01-14 168
2005-05-17 160
2008-09-04 156
2015-01-14 84
2008-01-28 42
2010-01-21 32
2024-08-28 32
2021-01-15 29
2011-01-20 24
2012-01-19 20
2020-10-15 20
2006-01-26 14
2005-01-29 13
2004-06-17 4

Last

Code
`IPC-PM-2015` %>%
  group_by(TIME_PERIOD) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(TIME_PERIOD)) %>%
  head(1) %>%
  print_table_conditional()
TIME_PERIOD Nobs
2024-11 63

PRIX_CONSO

Code
`IPC-PM-2015` %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  group_by(PRIX_CONSO, Prix_conso) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional

FREQ

Code
`IPC-PM-2015` %>%
  left_join(FREQ,  by = "FREQ") %>%
  group_by(FREQ, Freq) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
FREQ Freq Nobs
M Monthly 38999
A Annual 3156

TITLE_FR

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

TIME_PERIOD

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

Table - Last

Code
`IPC-PM-2015` %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  filter(is.finite(OBS_VALUE)) %>%
  group_by(PRIX_CONSO, Prix_conso) %>%
  arrange(TIME_PERIOD) %>%
  summarise(Nobs = n(),
            TIME_PERIOD = last(TIME_PERIOD),
            OBS_VALUE = last(OBS_VALUE)) %>%
  arrange(desc(TIME_PERIOD), OBS_VALUE) %>%
  print_table_conditional

Table

Code
`IPC-PM-2015` %>%
  filter(FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  group_by(PRIX_CONSO, Prix_conso) %>%
  arrange(TIME_PERIOD) %>%
  summarise(`1996-01` = OBS_VALUE[TIME_PERIOD == "1996-01"],
            `2022-01` = OBS_VALUE[TIME_PERIOD == "2022-01"]) %>%
  mutate(`%` = (`2022-01`/`1996-01`)^(1/26)- 1) %>%
  arrange(- `%`) %>%
  print_table_conditional()
PRIX_CONSO Prix_conso 1996-01 2022-01 %
3790 Non alimentaire : Fioul domestique : 1.000 litres (livré à domicile) 315.91 1086.32 0.0486500
3863 Gazole (1 litre) 0.62 1.63 0.0378773
1873 Non alimentaire : Gaz butane comprimé (13 kg), sans consigne 14.82 36.86 0.0356655
3078 Services : Travaux de plomberie (heure de M.O. TTC) 29.23 59.80 0.0279136
3077 Services : Travaux d'électricité (heure de M.O.), TTC 28.20 56.58 0.0271439
3860 Essence super sans plomb : octane 98 (1 litre) 0.89 1.77 0.0267955
1188 Viandes : Boeuf : entrecôte (kg) 13.39 26.13 0.0260479
1932 Services : Shampooing supérieur, coloration tenace et brushing pour femme 30.48 55.86 0.0235727
3792 Viandes : Boeuf : bifteck dans la bavette (kg) 13.69 24.84 0.0231796
1185 Viandes : Boeuf : filet (kg) 23.69 42.71 0.0229273
1187 Viandes : Boeuf : rumsteck (kg) 14.63 25.58 0.0217224
1339 Viandes : Lapin entier (kg) 6.59 11.14 0.0203971
1186 Viandes : Boeuf : faux-filet (kg) 14.96 25.23 0.0203055
1266 Viandes : Porc : échine avec os (kg) 5.93 9.61 0.0187419
1223 Produits alimentaires divers : Pain baguette (kg) 2.36 3.64 0.0168059
1244 Viandes : Veau : escalope (kg) 16.19 24.80 0.0165372
1264 Viandes : Porc : rôti dans le filet (kg) 7.56 11.35 0.0157515
1139 Viandes : Foie de veau frais (kg) 21.71 30.89 0.0136562
1192 Viandes : Boeuf : côte avec os (kg) 12.00 NaN NaN

Prix Baguette

Tous

Indice

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("1223", "1227"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  ggplot + theme_minimal() + xlab("") + ylab("Prix en €") +
  geom_line(aes(x = date, y = OBS_VALUE/4, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 3, 0.1),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.7, 0.15),
        legend.title = element_blank())

Glissement Annuel

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("1223", "1227"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  group_by(Prix_conso) %>%
  arrange(date) %>%
  mutate(inflation = OBS_VALUE/lag(OBS_VALUE,12)-1) %>%
  ggplot + theme_minimal() + xlab("") + ylab("Glissement annuel") +
  geom_line(aes(x = date, y = inflation, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 30, 1),
                     labels = percent_format(acc = 1)) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Immobilier, Pain Baguette

Code
t_5203_extract <- t_5203 %>%
  year_to_date2 %>%
  filter(sector %in% c("A10.LZ", "TOTAL")) %>%
  filter(date >= as.Date("1992-01-01")) %>%
  group_by(sector) %>%
  mutate(value = 100*value/value[date == as.Date("1992-01-01")]) %>%
  select(date, Variable = Sector, value)


data_extract <- `IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("1223"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  mutate(Variable = "Prix de la baguette") %>%
  select(date, Variable, value = OBS_VALUE) %>%
  mutate(value = 100*value/value[date == as.Date("1992-01-01")])


croissant <- `IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("1241"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  mutate(Variable = "Prix du croissant") %>%
  select(date, Variable, value = OBS_VALUE) %>%
  mutate(value = 100*value/value[date == as.Date("1992-01-01")])

t_5203_extract %>%
  bind_rows(data_extract) %>%
  bind_rows(croissant) %>%
  ggplot(.) + theme_minimal() + ylab("") + xlab("") +
  geom_line(aes(x = date, y = value, color = Variable)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.8)) +
  scale_x_date(breaks = seq(1950, 2022, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  
  scale_y_log10(breaks = seq(0, 200, 10))

Gaz butane comprimé

Valeur

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("1873"),
         FREQ == "M") %>%
  mutate(OBS_VALUE = ifelse(PRIX_CONSO == "3790", OBS_VALUE/1000, OBS_VALUE)) %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  mutate(Prix_conso = gsub("Non alimentaire : ", "", Prix_conso)) %>%
  mutate(Prix_conso = gsub(": 1.000 litres \\(livré à domicile\\)", 
                           "\\(1 litre, livré à domicile\\)", Prix_conso)) %>%
  ggplot + theme_minimal() + xlab("") + ylab("Gaz butane comprimé") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1992, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 40, 2),
                     labels = dollar_format(accuracy = 1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Base 100

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("1873", "3863", "3860"),
         FREQ == "M") %>%
  mutate(OBS_VALUE = ifelse(PRIX_CONSO == "3790", OBS_VALUE/1000, OBS_VALUE)) %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  mutate(Prix_conso = gsub("Non alimentaire : ", "", Prix_conso)) %>%
  mutate(Prix_conso = gsub(": 1.000 litres \\(livré à domicile\\)", 
                           "\\(1 litre, livré à domicile\\)", Prix_conso)) %>%
  group_by(PRIX_CONSO) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1992, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 850, 20)) +
  
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Essence, Fioul, Gazole

Tous

Value - Linear

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("3860", "3790", "3863"),
         FREQ == "M") %>%
  mutate(OBS_VALUE = ifelse(PRIX_CONSO == "3790", OBS_VALUE/1000, OBS_VALUE)) %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  mutate(Prix_conso = gsub("Non alimentaire : ", "", Prix_conso)) %>%
  mutate(Prix_conso = gsub(": 1.000 litres \\(livré à domicile\\)", 
                           "\\(1 litre, livré à domicile\\)", Prix_conso)) %>%
  ggplot + theme_minimal() + xlab("") + ylab("1 litre en €") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1992, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 3, 0.1),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Value - Log

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("3860", "3790", "3863"),
         FREQ == "M") %>%
  mutate(OBS_VALUE = ifelse(PRIX_CONSO == "3790", OBS_VALUE/1000, OBS_VALUE)) %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  mutate(Prix_conso = gsub("Non alimentaire : ", "", Prix_conso)) %>%
  mutate(Prix_conso = gsub(": 1.000 litres \\(livré à domicile\\)", 
                           "\\(1 litre, livré à domicile\\)", Prix_conso)) %>%
  ggplot + theme_minimal() + xlab("") + ylab("1 litre en €") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1992, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 3, 0.1),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank())

Indice

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("3860", "3790", "3863"),
         FREQ == "M") %>%
  mutate(OBS_VALUE = ifelse(PRIX_CONSO == "3790", OBS_VALUE/1000, OBS_VALUE)) %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  mutate(Prix_conso = gsub("Non alimentaire : ", "", Prix_conso)) %>%
  mutate(Prix_conso = gsub(": 1.000 litres \\(livré à domicile\\)", 
                           "\\(1 litre, livré à domicile\\)", Prix_conso)) %>%
  group_by(PRIX_CONSO) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1992, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 850, 50)) +
  
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank())

1996-

Value

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("3860", "3790", "3863"),
         FREQ == "M") %>%
  mutate(OBS_VALUE = ifelse(PRIX_CONSO == "3790", OBS_VALUE/1000, OBS_VALUE)) %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  filter(date >= as.Date("1996-01-01")) %>%
  mutate(Prix_conso = gsub("Non alimentaire : ", "", Prix_conso)) %>%
  mutate(Prix_conso = gsub(": 1.000 litres \\(livré à domicile\\)", 
                           "\\(1 litre, livré à domicile\\)", Prix_conso)) %>%
  ggplot + theme_minimal() + xlab("") + ylab("1 litre en €") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 3, 0.1),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.7, 0.2),
        legend.title = element_blank())

Indice

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("3860", "3790", "3863"),
         FREQ == "M") %>%
  mutate(OBS_VALUE = ifelse(PRIX_CONSO == "3790", OBS_VALUE/1000, OBS_VALUE)) %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  arrange(date) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  group_by(PRIX_CONSO) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  mutate(Prix_conso = gsub(": 1.000 litres \\(livré à domicile\\)", 
                           "\\(1 litre, livré à domicile\\)", Prix_conso)) %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 850, 50)) +
  
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank())

2015-

Value

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("3860", "3790", "3863"),
         FREQ == "M") %>%
  mutate(OBS_VALUE = ifelse(PRIX_CONSO == "3790", OBS_VALUE/1000, OBS_VALUE)) %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  filter(date >= as.Date("2015-01-01")) %>%
  mutate(Prix_conso = gsub("Non alimentaire : ", "", Prix_conso)) %>%
  mutate(Prix_conso = gsub(": 1.000 litres \\(livré à domicile\\)", 
                           "\\(1 litre, livré à domicile\\)", Prix_conso)) %>%
  ggplot + theme_minimal() + xlab("") + ylab("1 litre en €") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 3, 0.1),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Indice

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("3860", "3790", "3863"),
         FREQ == "M") %>%
  mutate(OBS_VALUE = ifelse(PRIX_CONSO == "3790", OBS_VALUE/1000, OBS_VALUE)) %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  arrange(date) %>%
  filter(date >= as.Date("2015-01-01")) %>%
  group_by(PRIX_CONSO) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  mutate(Prix_conso = gsub(": 1.000 litres \\(livré à domicile\\)", 
                           "\\(1 litre, livré à domicile\\)", Prix_conso)) %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 850, 50)) +
  
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank())

Essence, Gazole

Tous

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("3860", "3861", "3863"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  ggplot + theme_minimal() + xlab("") + ylab("1 litre en €") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 3, 0.1),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

1996-

Value

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("3860", "3861", "3863"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  filter(date >= as.Date("1996-01-01")) %>%
  ggplot + theme_minimal() + xlab("") + ylab("1 litre en €") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 3, 0.1),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

Indice

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("3860", "3863"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  arrange(date) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  group_by(PRIX_CONSO) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 850, 10)) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

2002-

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("3860", "3861", "3863"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  filter(date >= as.Date("2002-01-01")) %>%
  ggplot + theme_minimal() + xlab("") + ylab("1 litre en €") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 3, 0.1),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

2015-

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("3860", "3861", "3863"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  filter(date >= as.Date("2015-01-01")) %>%
  arrange(desc(date)) %>%
  select(date, OBS_VALUE, Prix_conso, everything()) %>%
  ggplot + theme_minimal() + xlab("") + ylab("1 litre en €") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 3, 0.1),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  scale_color_manual(values = c("blue", "red", "black")) +
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

Viandes, Boissons

Entrecôte de boeuf, Porc, Veau, Poulet

1992-

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("1188", "1244", "1264", "1334"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  ggplot + theme_minimal() + xlab("") + ylab("1 kg en €") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 100, 1),
                     labels = dollar_format(accuracy = 1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

1996-

Value

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("1188", "1244", "1264", "1334"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  filter(date >= as.Date("1996-01-01")) %>%
  ggplot + theme_minimal() + xlab("") + ylab("1 kg en €") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 100, 1),
                     labels = dollar_format(accuracy = 1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

100

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("1188", "1244", "1264", "1334"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  arrange(date) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  group_by(PRIX_CONSO) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 850, 10)) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

Apéritifs anisés, Whisky

1992

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("1180", "1181"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  ggplot + theme_minimal() + xlab("") + ylab("en €") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 100, 1),
                     labels = dollar_format(accuracy = 1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

1996-

Value

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("1180", "1181"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  filter(date >= as.Date("1996-01-01")) %>%
  ggplot + theme_minimal() + xlab("") + ylab("1 kg en €") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 100, 1),
                     labels = dollar_format(accuracy = 1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

100

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("1180", "1181"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  arrange(date) %>%
  filter(date >= as.Date("1996-01-01")) %>%
  group_by(PRIX_CONSO) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 850, 10)) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

Services - Heures de M.O

Electricite, Plomberie

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("3077", "3078"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  ggplot + theme_minimal() + xlab("") + ylab("1 kg en €") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 100, 5),
                     labels = dollar_format(accuracy = 1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Carrosserie automobile, Mécanique automobile

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("2849", "2848"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  mutate(Prix_conso = gsub(" : une heure de main-d'oeuvre (y c. TVA)", "", Prix_conso)) %>%
  month_to_date() %>%
  ggplot + theme_minimal() + xlab("") + ylab("1 heure de M.O en €") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 100, 5),
                     labels = dollar_format(accuracy = 1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.65, 0.1),
        legend.title = element_blank())

Shampooing

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("1932", "2326", "1930"),
         FREQ == "M") %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  month_to_date() %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 100, 5),
                     labels = dollar_format(accuracy = 1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.35, 0.9),
        legend.title = element_blank())

Bar / Restaurant

Café

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("2782", "2126"),
         FREQ == "M") %>%
  month_to_date() %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 3, 0.1),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

Cola, Bière

All

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("2433", "2768"),
         FREQ == "M") %>%
  month_to_date() %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 7, 0.1),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

2000-2004

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("2433", "2768"),
         FREQ == "M") %>%
  month_to_date() %>%
  filter(date >= as.Date("2000-01-01"),
         date <= as.Date("2004-01-01")) %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = "3 months",
               labels = date_format("%b %Y")) +
  scale_y_continuous(breaks = seq(0, 7, 0.1),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Fruits et Légumes

Kiwi, Pamplemousses, Avocat

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("3840", "3903", "3841"),
         FREQ == "M") %>%
  month_to_date() %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 3, 0.1),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

Bananes, Oranges, Carottes, Pomme de terre

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("8959", "8932", "8948", "8942"),
         FREQ == "M") %>%
  month_to_date() %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 5, 0.2),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

Pommes, Courgettes, Oignons, Tomates

Code
`IPC-PM-2015` %>%
  filter(PRIX_CONSO %in% c("8953", "8944", "8955", "8951"),
         FREQ == "M") %>%
  month_to_date() %>%
  left_join(PRIX_CONSO,  by = "PRIX_CONSO") %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
  scale_x_date(breaks = seq(1960, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 5, 0.2),
                     labels = dollar_format(accuracy = .1, prefix = "", su = " €")) +
  
  theme(legend.position = c(0.85, 0.9),
        legend.title = element_blank())