Indices of Consumer prices - ICP

Data - ECB

Info

LAST_DOWNLOAD

LAST_DOWNLOAD
2024-07-26

LAST_COMPILE

LAST_COMPILE
2024-08-22

Last

TIME_PERIOD FREQ Nobs
2024-Q1 Q 630
2024-06 M 23449
2024 A 15783

Nobs

ICP_ITEM

Code
ICP %>%
  left_join(ICP_ITEM,  by = "ICP_ITEM") %>%
  group_by(ICP_ITEM, Icp_item) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

ICP_SUFFIX

Code
ICP %>%
  left_join(ICP_SUFFIX,  by = "ICP_SUFFIX") %>%
  group_by(ICP_SUFFIX, Icp_suffix) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
ICP_SUFFIX Icp_suffix Nobs
INX Index 2860961
ANR Annual rate of change 2711203
INW Sub-index weight 271436
AVR Annual average rate of change 220219
CTG Contribution to growth rate 52608
QUR Quarterly rate of change 19837
OHW OOHPI weight (all OOHPI items = 1000) 6003
D0W EU (changing composition) country weights 5095
V5W EU 27 (as of brexit) country weights 4644
U2W Euro area country weights 3596
I9W NA 3325
V3W EU 28 country weights 3211
I8W Euro 19 country weights 3135
3MM Three-month moving average 1097
MOR Monthly rate of change 329
CTR Annual rate of change at constant tax rates (HICP-CT) 19

UNIT

Code
ICP %>%
  group_by(UNIT) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
UNIT Nobs
PURE_NUMB 3164538
PCCH 2949572
POINTS 52608

TITLE

Code
ICP %>%
  group_by(TITLE) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

FREQ

Code
ICP %>%
  left_join(FREQ,  by = "FREQ") %>%
  group_by(FREQ, Freq) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
FREQ Freq Nobs
M Monthly 5582307
A Annual 525652
Q Quarterly 58759

UNIT

Code
ICP %>%
  left_join(UNIT,  by = "UNIT") %>%
  group_by(UNIT, Unit) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
UNIT Unit Nobs
PURE_NUMB Pure number 3164538
PCCH Percentage change 2949572
POINTS Points 52608

STS_INSTITUTION

Code
ICP %>%
  mutate(STS_INSTITUTION = paste0(STS_INSTITUTION)) %>%
  left_join(STS_INSTITUTION,  by = "STS_INSTITUTION") %>%
  group_by(STS_INSTITUTION, Sts_institution) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

REF_AREA

Code
ICP %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  group_by(REF_AREA, Ref_area) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

ADJUSTMENT

Code
ICP %>%
  left_join(ADJUSTMENT,  by = "ADJUSTMENT") %>%
  group_by(ADJUSTMENT, Adjustment) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

UNIT_INDEX_BASE

Code
ICP %>%
  group_by(UNIT_INDEX_BASE) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
UNIT_INDEX_BASE Nobs
3025790
2015 = 100 2740275
Parts per 1000. HICP total = 1000 271276
2005 = 100 120686
Parts per 1000. EU total = 1000 5095
Parts per 1000. EMU total = 1000 3596

DECIMALS

Code
ICP %>%
  group_by(DECIMALS) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
DECIMALS Nobs
1 3576058
2 2589823
6 837

TIME_FORMAT

Code
ICP %>%
  group_by(TIME_FORMAT) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
TIME_FORMAT Nobs
P1M 5582307
P1Y 525652
P3M 58759

Info

Housing

Greece

Code
ICP %>%
  filter(REF_AREA %in% c("GR"),
         ICP_ITEM %in% c("HOUSE0", "041000", "040000"),
         ICP_SUFFIX == "INX") %>%
  left_join(ICP_ITEM, by = "ICP_ITEM") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() +  ylab("HICP - Overall index") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.65, 0.15),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Spain

Code
ICP %>%
  filter(REF_AREA %in% c("ES"),
         ICP_ITEM %in% c("HOUSE0", "041000", "040000"),
         ICP_SUFFIX == "INX") %>%
  left_join(ICP_ITEM, by = "ICP_ITEM") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() +  ylab("HICP - Overall index") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.65, 0.15),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

France

Code
ICP %>%
  filter(REF_AREA %in% c("FR"),
         ICP_ITEM %in% c("HOUSE0", "041000", "040000"),
         ICP_SUFFIX == "INX") %>%
  left_join(ICP_ITEM, by = "ICP_ITEM") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() +  ylab("HICP - Overall index") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.65, 0.15),
        legend.title = element_blank()) +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Harmonised Index of Consumer Prices - HICP

Euro area Broad Indexes (1960-)

Code
ICP %>%
  filter(REF_AREA %in% c("U2"),
         # 000000: HICP - Overall index
         # XEF000: HICP - All-items excluding energy and food
         ICP_ITEM %in% c("000000", "XEF000", "XE0000"),
         # ANR: Annual Rate of Change
         ICP_SUFFIX == "ANR",
         FREQ == "M") %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() + theme_minimal() + ylab("HICP - Broad indexes") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = TITLE)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.75, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
                labels = percent_format(accuracy = 1))

Euro area Broad Indexes (1996-)

Code
ICP %>%
  filter(REF_AREA %in% c("U2"),
         # 000000: HICP - Overall index
         # XEF000: HICP - All-items excluding energy and food
         ICP_ITEM %in% c("000000", "XEF000", "XE0000"),
         # ANR: Annual Rate of Change
         ICP_SUFFIX == "ANR",
         FREQ == "M") %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE),
         date >= as.Date("1996-01-01")) %>%
  ggplot() + theme_minimal() + ylab("HICP - Broad indexes") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = TITLE)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.75, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
                labels = percent_format(accuracy = 1))

Euro area Broad Indexes (2008-)

Code
ICP %>%
  filter(REF_AREA %in% c("U2"),
         # 000000: HICP - Overall index
         # XEF000: HICP - All-items excluding energy and food
         ICP_ITEM %in% c("000000", "XEF000", "XE0000"),
         # ANR: Annual Rate of Change
         ICP_SUFFIX == "ANR",
         FREQ == "M") %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE),
         date >= as.Date("2007-01-01")) %>%
  ggplot() + theme_minimal() + ylab("HICP - Broad indexes") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = KEY)) + 
  scale_color_manual(values = viridis(5)[1:4]) +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.75, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
                labels = percent_format(accuracy = 1))

Spain Broad Indexes

1996-2021

Code
ICP %>%
  filter(REF_AREA %in% c("ES"),
         # 000000: HICP - Overall index
         # XEF000: HICP - All-items excluding energy and food
         ICP_ITEM %in% c("000000", "XEF000", "XE0000"),
         # ANR: Annual Rate of Change
         ICP_SUFFIX == "ANR",
         FREQ == "M") %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE),
         date >= as.Date("1996-01-01")) %>%
  ggplot() + theme_minimal() + ylab("HICP - Broad indexes") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = TITLE)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0.02, linetype = "dashed",  color = "black") +
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black") +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 0.5),
                labels = percent_format(accuracy = 0.1),
                limits =c(-0.005, 0.035))

2010-2013

Code
ICP %>%
  filter(REF_AREA %in% c("ES"),
         # 000000: HICP - Overall index
         # XEF000: HICP - All-items excluding energy and food
         ICP_ITEM %in% c("000000", "XEF000", "XE0000"),
         # ANR: Annual Rate of Change
         ICP_SUFFIX == "ANR",
         FREQ == "M") %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE),
         date >= as.Date("2010-01-01"),
         date <= as.Date("2014-01-01")) %>%
  ggplot() + theme_minimal() + ylab("HICP - Broad indexes") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = TITLE)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0.02, linetype = "dashed",  color = "black") +
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black") +
  scale_x_date(breaks = seq(1920, 2025, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.5, 0.11),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 0.5),
                labels = percent_format(accuracy = 0.1))

Greece

2010-2013

Code
ICP %>%
  filter(REF_AREA %in% c("GR"),
         # 000000: HICP - Overall index
         # XEF000: HICP - All-items excluding energy and food
         ICP_ITEM %in% c("000000", "XEF000", "XE0000"),
         # ANR: Annual Rate of Change
         ICP_SUFFIX == "ANR",
         FREQ == "M") %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE),
         date >= as.Date("2010-01-01"),
         date <= as.Date("2014-01-01")) %>%
  ggplot() + theme_minimal() + ylab("HICP - Broad indexes") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = TITLE)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0.02, linetype = "dashed",  color = "black") +
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black") +
  scale_x_date(breaks = seq(1920, 2025, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 0.5),
                labels = percent_format(accuracy = 0.1))

Germany Broad Indexes

1996-2021

Code
ICP %>%
  filter(REF_AREA %in% c("DE"),
         # 000000: HICP - Overall index
         # XEF000: HICP - All-items excluding energy and food
         ICP_ITEM %in% c("000000", "XEF000", "XE0000"),
         # ANR: Annual Rate of Change
         ICP_SUFFIX == "ANR",
         FREQ == "M") %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE),
         date >= as.Date("1996-01-01")) %>%
  ggplot() + theme_minimal() + ylab("HICP - Broad indexes") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = TITLE)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0.02, linetype = "dashed",  color = "black") +
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black") +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 0.5),
                labels = percent_format(accuracy = 0.1),
                limits =c(-0.005, 0.035))

Annual - Euro area Broad Indexes

1996-2021

Code
ICP %>%
  filter(REF_AREA %in% c("U2"),
         # 000000: HICP - Overall index
         # XEF000: HICP - All-items excluding energy and food
         ICP_ITEM %in% c("XEFUN0", "XEF000", "XE0000"),
         # ANR: Annual Rate of Change
         ICP_SUFFIX == "INX",
         STS_INSTITUTION == 3,
         FREQ == "M") %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  left_join(ICP_ITEM,  by = "ICP_ITEM") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE),
         date >= as.Date("1996-01-01"),
         month(date) == 1) %>%
  group_by(ICP_ITEM) %>%
  mutate(OBS_VALUE = 100*(OBS_VALUE/lag(OBS_VALUE, 1) - 1)) %>%
  select(KEY, ICP_ITEM, Icp_item, date, OBS_VALUE) %>%
  na.omit %>%
  ggplot() + theme_minimal() + ylab("HICP - Broad indexes") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = Icp_item)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0.02, linetype = "dashed",  color = "black") +
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black") +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.75, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, 0.5),
                labels = percent_format(accuracy = 0.1))

Monthly - Euro area Broad Indexes

1996-2021

Code
ICP %>%
  filter(REF_AREA %in% c("U2"),
         # 000000: HICP - Overall index
         # XEF000: HICP - All-items excluding energy and food
         ICP_ITEM %in% c("XEFUN0", "XEF000", "XE0000"),
         # ANR: Annual Rate of Change
         ICP_SUFFIX == "ANR",
         FREQ == "M") %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE),
         date >= as.Date("1996-01-01")) %>%
  ggplot() + theme_minimal() + ylab("HICP - Broad indexes") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = TITLE, linetype = TITLE)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0.02, linetype = "dashed",  color = "black") +
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black") +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.75, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, 0.5),
                labels = percent_format(accuracy = 0.1))

2009-2021

Code
ICP %>%
  filter(REF_AREA %in% c("U2"),
         # 000000: HICP - Overall index
         # XEF000: HICP - All-items excluding energy and food
         ICP_ITEM %in% c("XEFUN0", "XEF000", "XE0000"),
         # ANR: Annual Rate of Change
         ICP_SUFFIX == "ANR",
         FREQ == "M") %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE),
         date >= as.Date("2009-01-01")) %>%
  ggplot() + theme_minimal() + ylab("HICP - Broad indexes") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = TITLE, linetype = TITLE)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0.02, linetype = "dashed",  color = "black") +
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black") +
  scale_x_date(breaks = seq(1920, 2025, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.75, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, 0.5),
                labels = percent_format(accuracy = 0.1),
                limits = c(0, 0.025))

2009-2014

Code
ICP %>%
  filter(REF_AREA %in% c("U2"),
         # 000000: HICP - Overall index
         # XEF000: HICP - All-items excluding energy and food
         ICP_ITEM %in% c("XEFUN0", "000000", "XE0000"),
         # ANR: Annual Rate of Change
         ICP_SUFFIX == "ANR",
         FREQ == "M") %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE),
         date >= as.Date("2009-01-01"),
         date <= as.Date("2014-12-31")) %>%
  ggplot() + theme_minimal() + ylab("HICP - Broad indexes") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = TITLE, linetype = TITLE)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0.02, linetype = "dashed",  color = "black") +
  scale_x_date(breaks = seq(1920, 2025, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.6, 0.2),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, 0.5),
                labels = percent_format(accuracy = 0.1)) + 
  geom_vline(xintercept = as.Date("2011-04-07"), linetype = "dashed", color = "black") + 
  geom_vline(xintercept = as.Date("2011-07-07"), linetype = "dashed", color = "black")

2013-2021

Code
ICP %>%
  filter(REF_AREA %in% c("U2"),
         # 000000: HICP - Overall index
         # XEF000: HICP - All-items excluding energy and food
         ICP_ITEM %in% c("XEFUN0", "000000", "XE0000"),
         # ANR: Annual Rate of Change
         ICP_SUFFIX == "ANR",
         FREQ == "M") %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE),
         date >= as.Date("2013-01-01"),
         date <= as.Date("2021-12-31")) %>%
  ggplot() + theme_minimal() + ylab("HICP - Broad indexes") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = TITLE)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_hline(yintercept = 0.02, linetype = "dashed",  color = "black") +
  scale_x_date(breaks = seq(1920, 2025, 1) %>% 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, 200, 0.5),
                labels = percent_format(accuracy = 0.1)) + 
  geom_vline(xintercept = as.Date("2011-04-07"), linetype = "dashed", color = "black") + 
  geom_vline(xintercept = as.Date("2011-07-07"), linetype = "dashed", color = "black")

Euro area - Long

Code
ICP %>%
  filter(REF_AREA %in% c("U2"),
         # 000000: HICP - Overall index
         # XEF000: HICP - All-items excluding energy and food
         ICP_ITEM %in% c("000000"),
         # ANR: Annual Rate of Change
         ICP_SUFFIX == "ANR",
         FREQ == "M") %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() + theme_minimal() + ylab("HICP - Overall index") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = TITLE, linetype = TITLE)) + 
  scale_color_manual(values = viridis(3)[1:1]) +
  geom_hline(yintercept = 0.02, linetype = "dashed",  color = viridis(3)[2]) +
  scale_x_date(breaks = seq(1920, 2025, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.75, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, 2),
                labels = percent_format(accuracy = 1))

Germany, France, United Kinggom

Code
ICP %>%
  filter(REF_AREA %in% c("DE", "FR", "GB"),
         # 000000: HICP - Overall index
         ICP_ITEM == "000000",
         FREQ == "M",
         UNIT_INDEX_BASE == "2015 = 100") %>%
  left_join(REF_AREA,  by = "REF_AREA") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() + 
  geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2025, 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, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  ylab("HICP - Overall index") + xlab("")

Decomposition between Services and Goods

France

Monthly

Code
ICP %>%
  filter(REF_AREA %in% c("FR"),
         # 000000: HICP - Overall index
         ICP_ITEM %in% c("SERV00", "041000", "IGXE00"),
         FREQ == "M",
         UNIT_INDEX_BASE == "2015 = 100",
         UNIT == "PURE_NUMB") %>%
  left_join(ICP_ITEM, by = "ICP_ITEM") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() + 
  geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  ylab("HICP - Overall index") + xlab("")

Annual

Code
ICP %>%
  filter(REF_AREA %in% c("FR"),
         # 000000: HICP - Overall index
         ICP_ITEM %in% c("SERV00", "041000", "IGXE00"),
         UNIT == "PURE_NUMB",
         FREQ == "A") %>%
  left_join(ICP_ITEM, by = "ICP_ITEM") %>%
  year_to_date() %>%
  group_by(ICP_ITEM) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
  ggplot() + ylab("HICP - Overall index") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.25, 0.15),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(0, 200, 5),
                labels = dollar_format(accuracy = 1, prefix = ""))

Germany

Code
ICP %>%
  filter(REF_AREA %in% c("DE"),
         # 000000: HICP - Overall index
         ICP_ITEM %in% c("SERV00", "041000", "IGXE00"),
         FREQ == "M",
         UNIT_INDEX_BASE == "2015 = 100",
         UNIT == "PURE_NUMB") %>%
  left_join(ICP_ITEM, by = "ICP_ITEM") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() + 
  geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  ylab("HICP - Overall index") + xlab("")

Greece

Code
ICP %>%
  filter(REF_AREA %in% c("GR"),
         # 000000: HICP - Overall index
         ICP_ITEM %in% c("SERV00", "041000", "IGXE00"),
         FREQ == "M",
         UNIT_INDEX_BASE == "2015 = 100",
         UNIT == "PURE_NUMB") %>%
  left_join(ICP_ITEM, by = "ICP_ITEM") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() + 
  geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  ylab("HICP - Overall index") + xlab("")

Portugal

Code
ICP %>%
  filter(REF_AREA %in% c("PT"),
         # 000000: HICP - Overall index
         ICP_ITEM %in% c("SERV00", "041000", "IGXE00"),
         FREQ == "M",
         UNIT_INDEX_BASE == "2015 = 100",
         UNIT == "PURE_NUMB") %>%
  left_join(ICP_ITEM, by = "ICP_ITEM") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() + 
  geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) + 
  scale_color_manual(values = viridis(4)[1:3]) +
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  ylab("HICP - Overall index") + xlab("")

Further Decomposing

Germany

Code
ICP %>%
  filter(REF_AREA %in% c("DE"),
         # 000000: HICP - Overall index
         ICP_ITEM %in% c("110000", "120000", "030000", "041000"),
         FREQ == "M",
         UNIT_INDEX_BASE == "2015 = 100",
         UNIT == "PURE_NUMB") %>%
  left_join(ICP_ITEM, by = "ICP_ITEM") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() + 
  geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) + 
  scale_color_manual(values = viridis(5)[1:4]) +
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  ylab("HICP - Overall index") + xlab("")

France

Code
ICP %>%
  filter(REF_AREA %in% c("FR"),
         # 000000: HICP - Overall index
         ICP_ITEM %in% c("110000", "120000", "030000", "041000"),
         FREQ == "M",
         UNIT_INDEX_BASE == "2015 = 100",
         UNIT == "PURE_NUMB") %>%
  left_join(ICP_ITEM, by = "ICP_ITEM") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() + 
  geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) + 
  scale_color_manual(values = viridis(5)[1:4]) +
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.75, 0.25),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  ylab("HICP - Overall index") + xlab("")

Greece

Code
ICP %>%
  filter(REF_AREA %in% c("GR"),
         # 000000: HICP - Overall index
         ICP_ITEM %in% c("110000", "120000", "030000", "041000"),
         FREQ == "M",
         UNIT_INDEX_BASE == "2015 = 100",
         UNIT == "PURE_NUMB") %>%
  left_join(ICP_ITEM, by = "ICP_ITEM") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() + 
  geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) + 
  scale_color_manual(values = viridis(5)[1:4]) +
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.75, 0.25),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  ylab("HICP - Overall index") + xlab("")

Portugal

Code
ICP %>%
  filter(REF_AREA %in% c("PT"),
         # 000000: HICP - Overall index
         ICP_ITEM %in% c("110000", "120000", "030000", "041000"),
         FREQ == "M",
         UNIT_INDEX_BASE == "2015 = 100",
         UNIT == "PURE_NUMB") %>%
  left_join(ICP_ITEM, by = "ICP_ITEM") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() + 
  geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) + 
  scale_color_manual(values = viridis(5)[1:4]) +
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.75, 0.25),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  ylab("HICP - Overall index") + xlab("")

Price of Energy

Code
ICP %>%
  filter(REF_AREA %in% c("DE"),
         # 000000: HICP - Overall index
         ICP_ITEM %in% c("NRGY00", "ELGAS0", "045500"),
         FREQ == "M",
         ICP_SUFFIX == "INX") %>%
  left_join(ICP_ITEM, by = "ICP_ITEM") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE)) %>%
  ggplot() + 
  geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) + 
  scale_color_manual(values = viridis(5)[1:4]) +
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.75, 0.25),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(0, 200, 5),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  ylab("HICP - Overall index") + xlab("")

Deflation in Greece

Code
ICP %>%
  filter(REF_AREA %in% c("GR"),
         FREQ == "M",
         UNIT_INDEX_BASE == "2015 = 100",
         UNIT == "PURE_NUMB") %>%
  left_join(ICP_ITEM, by = "ICP_ITEM") %>%
  month_to_date() %>%
  filter(!is.na(OBS_VALUE),
         date %in% as.Date(paste0(c(2012, 2014), "-01-01"))) %>%
  select(date, ICP_ITEM, TITLE, OBS_VALUE) %>%
  group_by(ICP_ITEM, TITLE) %>%
  summarise(`% change` = round(100*(OBS_VALUE[2] - OBS_VALUE[1])/OBS_VALUE[1], 1)) %>%
  arrange(`% change`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}