Indices of Consumer prices - ICP
Data - ECB
Info
Last observation: Monthly: 2025-12 (N = 24,836) · Quarterly: 2025-Q4 (N = 963) · Annual: 2025 (N = 26,052)
First observation: Monthly: 1985-01 (N = 2) · Quarterly: 2005-Q1 (N = 52) · Annual: 1986 (N = 1)
Last data update: 13 aoû 2026, 03:39. Last compile: 13 aoû 2026, 08:22
Structure
Info
LAST_COMPILE
| LAST_COMPILE |
|---|
| 2026-08-13 |
Last
| TIME_PERIOD | FREQ | Nobs |
|---|---|---|
| 2025-Q4 | Q | 963 |
| 2025-12 | M | 24836 |
| 2025 | A | 26052 |
Nobs
UNIT
Code
ICP |>
group_by(UNIT) |>
summarise(Nobs = n()) |>
arrange(-Nobs) %>%
{if (is_html_output()) print_table(.) else .}| UNIT | Nobs |
|---|---|
| PURE_NUMB | 3375374 |
| PCCH | 3198357 |
| PD | 55272 |
| IX | 32807 |
| POINTS | 288 |
TITLE
Code
ICP |>
group_by(TITLE) |>
summarise(Nobs = n()) |>
arrange(-Nobs) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}STS_INSTITUTION
Code
ICP |>
mutate(STS_INSTITUTION = paste0(STS_INSTITUTION)) |>
group_by(STS_INSTITUTION, Sts_institution) |>
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 |
|---|---|
| 3279100 | |
| 2015 = 100 | 2967104 |
| Parts per 1000. HICP total = 1000 | 284843 |
| 2005 = 100 | 121802 |
| Parts per 1000. EU total = 1000 | 5412 |
| Parts per 1000. EMU total = 1000 | 3837 |
DECIMALS
Code
ICP |>
group_by(DECIMALS) |>
summarise(Nobs = n()) |>
arrange(-Nobs) %>%
{if (is_html_output()) print_table(.) else .}| DECIMALS | Nobs |
|---|---|
| 1 | 3870627 |
| 2 | 2790580 |
| 6 | 891 |
TIME_FORMAT
Code
ICP |>
group_by(TIME_FORMAT) |>
summarise(Nobs = n()) |>
arrange(-Nobs) %>%
{if (is_html_output()) print_table(.) else .}| TIME_FORMAT | Nobs |
|---|---|
| P1M | 6029946 |
| P1Y | 565080 |
| P3M | 67072 |
Info
Housing
Greece
Code
ICP |>
filter(REF_AREA %in% c("GR"),
ICP_ITEM %in% c("HOUSE0", "041000", "040000"),
ICP_SUFFIX == "INX") |>
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)) +
theme(legend.position = c(0.65, 0.15),
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(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") |>
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)) +
theme(legend.position = c(0.65, 0.15),
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(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") |>
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)) +
theme(legend.position = c(0.65, 0.15),
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(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") |>
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_x_date(breaks = seq(1920, 2100, 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") |>
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_x_date(breaks = seq(1920, 2100, 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") |>
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_x_date(breaks = seq(1920, 2100, 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") |>
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)) +
geom_hline(yintercept = 0.02, linetype = "dashed", color = "black") +
geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
scale_x_date(breaks = seq(1920, 2100, 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))
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") |>
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)) +
geom_hline(yintercept = 0.02, linetype = "dashed", color = "black") +
geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
scale_x_date(breaks = seq(1920, 2100, 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") |>
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)) +
geom_hline(yintercept = 0.02, linetype = "dashed", color = "black") +
geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
scale_x_date(breaks = seq(1920, 2100, 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") |>
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)) +
geom_hline(yintercept = 0.02, linetype = "dashed", color = "black") +
geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
scale_x_date(breaks = seq(1920, 2100, 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))
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") |>
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)) +
geom_hline(yintercept = 0.02, linetype = "dashed", color = "black") +
geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
scale_x_date(breaks = seq(1920, 2100, 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") |>
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)) +
geom_hline(yintercept = 0.02, linetype = "dashed", color = "black") +
geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
scale_x_date(breaks = seq(1920, 2100, 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") |>
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)) +
geom_hline(yintercept = 0.02, linetype = "dashed", color = "black") +
geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
scale_x_date(breaks = seq(1920, 2100, 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))
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") |>
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)) +
geom_hline(yintercept = 0.02, linetype = "dashed", color = "black") +
scale_x_date(breaks = seq(1920, 2100, 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") |>
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)) +
geom_hline(yintercept = 0.02, linetype = "dashed", color = "black") +
scale_x_date(breaks = seq(1920, 2100, 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") |>
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)) +
geom_hline(yintercept = 0.02, linetype = "dashed", color = viridis(3)[2]) +
scale_x_date(breaks = seq(1920, 2100, 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") |>
month_to_date() |>
filter(!is.na(OBS_VALUE)) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
theme_minimal() +
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, 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") |>
month_to_date() |>
filter(!is.na(OBS_VALUE)) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) +
theme_minimal() +
scale_x_date(breaks = seq(1920, 2100, 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") |>
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_x_date(breaks = seq(1920, 2100, 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") |>
month_to_date() |>
filter(!is.na(OBS_VALUE)) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) +
theme_minimal() +
scale_x_date(breaks = seq(1920, 2100, 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") |>
month_to_date() |>
filter(!is.na(OBS_VALUE)) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) +
theme_minimal() +
scale_x_date(breaks = seq(1920, 2100, 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") |>
month_to_date() |>
filter(!is.na(OBS_VALUE)) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) +
theme_minimal() +
scale_x_date(breaks = seq(1920, 2100, 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") |>
month_to_date() |>
filter(!is.na(OBS_VALUE)) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) +
theme_minimal() +
scale_x_date(breaks = seq(1920, 2100, 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") |>
month_to_date() |>
filter(!is.na(OBS_VALUE)) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) +
theme_minimal() +
scale_x_date(breaks = seq(1920, 2100, 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") |>
month_to_date() |>
filter(!is.na(OBS_VALUE)) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) +
theme_minimal() +
scale_x_date(breaks = seq(1920, 2100, 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") |>
month_to_date() |>
filter(!is.na(OBS_VALUE)) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) +
theme_minimal() +
scale_x_date(breaks = seq(1920, 2100, 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") |>
month_to_date() |>
filter(!is.na(OBS_VALUE)) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE, color = Icp_item)) +
theme_minimal() +
scale_x_date(breaks = seq(1920, 2100, 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") |>
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 .}