| source | dataset | Title | .html | .rData |
|---|---|---|---|---|
| eurostat | prc_hicp_manr | HICP (2015 = 100) - monthly data (annual rate of change) | 2025-11-14 | 2025-11-16 |
| eurostat | prc_hicp_aind | HICP (2015 = 100) - annual data (average index and rate of change) | 2025-11-14 | 2025-11-15 |
| eurostat | prc_hicp_cow | HICP - country weights | 2025-11-14 | 2025-11-16 |
| eurostat | nama_10_co3_p3 | Final consumption expenditure of households by consumption purpose (COICOP 3 digit) | 2025-11-16 | 2025-11-13 |
HICP (2015 = 100) - annual data (average index and rate of change)
Data - Eurostat
Info
Data on inflation
| source | dataset | Title | .html | .rData |
|---|---|---|---|---|
| bis | CPI | Consumer Price Index | 2025-10-11 | 2025-10-11 |
| ecb | CES | Consumer Expectations Survey | 2025-08-28 | 2025-05-24 |
| eurostat | nama_10_co3_p3 | Final consumption expenditure of households by consumption purpose (COICOP 3 digit) | 2025-11-16 | 2025-11-13 |
| eurostat | prc_hicp_cow | HICP - country weights | 2025-11-14 | 2025-11-16 |
| eurostat | prc_hicp_ctrb | Contributions to euro area annual inflation (in percentage points) | 2025-11-14 | 2025-11-16 |
| eurostat | prc_hicp_inw | HICP - item weights | 2025-11-14 | 2025-11-15 |
| eurostat | prc_hicp_manr | HICP (2015 = 100) - monthly data (annual rate of change) | 2025-11-14 | 2025-11-16 |
| eurostat | prc_hicp_midx | HICP (2015 = 100) - monthly data (index) | 2025-11-14 | 2025-11-15 |
| eurostat | prc_hicp_mmor | HICP (2015 = 100) - monthly data (monthly rate of change) | 2025-11-14 | 2025-11-15 |
| eurostat | prc_ppp_ind | Purchasing power parities (PPPs), price level indices and real expenditures for ESA 2010 aggregates | 2025-11-14 | 2025-11-16 |
| eurostat | sts_inpp_m | Producer prices in industry, total - monthly data | 2025-11-14 | 2025-11-15 |
| eurostat | sts_inppd_m | Producer prices in industry, domestic market - monthly data | 2025-11-14 | 2025-11-16 |
| eurostat | sts_inppnd_m | Producer prices in industry, non domestic market - monthly data | 2024-06-24 | 2025-11-16 |
| fred | cpi | Consumer Price Index | 2025-11-15 | 2025-11-15 |
| fred | inflation | Inflation | 2025-11-15 | 2025-11-15 |
| imf | CPI | Consumer Price Index - CPI | 2025-08-28 | 2020-03-13 |
| oecd | MEI_PRICES_PPI | Producer Prices - MEI_PRICES_PPI | 2025-09-29 | 2024-04-15 |
| oecd | PPP2017 | 2017 PPP Benchmark results | 2024-04-16 | 2023-07-25 |
| oecd | PRICES_CPI | Consumer price indices (CPIs) | 2024-04-16 | 2024-04-15 |
| wdi | FP.CPI.TOTL.ZG | Inflation, consumer prices (annual %) | 2023-01-15 | 2025-11-15 |
| wdi | NY.GDP.DEFL.KD.ZG | Inflation, GDP deflator (annual %) | 2025-11-15 | 2025-11-15 |
LAST_COMPILE
| LAST_COMPILE |
|---|
| 2025-11-16 |
Last
Code
prc_hicp_aind %>%
group_by(time) %>%
summarise(Nobs = n()) %>%
arrange(desc(time)) %>%
head(2) %>%
print_table_conditional()| time | Nobs |
|---|---|
| 2024 | 32554 |
| 2023 | 32552 |
unit
Code
prc_hicp_aind %>%
left_join(unit, by = "unit") %>%
group_by(unit, Unit) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
{if (is_html_output()) print_table(.) else .}| unit | Unit | Nobs |
|---|---|---|
| INX_A_AVG | Annual average index | 294357 |
| RCH_A_AVG | Annual average rate of change | 278469 |
| CID_EA | NA | 667 |
coicop
Code
prc_hicp_aind %>%
left_join(coicop, by = "coicop") %>%
group_by(coicop, Coicop) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}geo
Code
prc_hicp_aind %>%
left_join(geo, by = "geo") %>%
group_by(geo, Geo) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
select(Flag, everything()) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}time
Code
prc_hicp_aind %>%
group_by(time) %>%
summarise(Nobs = n()) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}Quality
Code
compare_coicop <- function(CPname, legend.position = c(0.2, 0.2), start = 1996, geos = c("DE", "FR", "IT", "ES", "NL"), ytick = 10){
inflation <- prc_hicp_aind %>%
filter(unit == "INX_A_AVG",
coicop == CPname,
geo %in% geos) %>%
left_join(geo, by = "geo") %>%
select(geo, Geo, coicop, time, values) %>%
arrange(time) %>%
year_to_date %>%
filter(date >= as.Date(paste0(start, "-01-01"))) %>%
left_join(colors, by = c("Geo" = "country")) %>%
group_by(Geo) %>%
arrange(date) %>%
mutate(values = 100*values/values[1]) %>%
ungroup %>%
mutate(variable = "Price index")
cons <- nama_10_co3_p3 %>%
filter(unit == "PD15_EUR",
geo %in% geos,
coicop == CPname) %>%
left_join(geo, by = "geo") %>%
year_to_date %>%
filter(date >= as.Date(paste0(start, "-01-01"))) %>%
left_join(colors, by = c("Geo" = "country")) %>%
group_by(Geo) %>%
arrange(date) %>%
mutate(values = 100*values/values[1]) %>%
ungroup %>%
mutate(variable = "Consumption Deflator")
cons %>%
bind_rows(inflation) %>%
ggplot + geom_line(aes(x = date, y = values, color = color, linetype = variable)) +
theme_minimal() +
scale_color_identity() + xlab("") + ylab(CPname) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = legend.position,
legend.title = element_blank()) +
scale_y_log10(breaks = seq(10, 1000, ytick))
}
compare_coicop2 <- function(CPname, CPname2, legend.position = c(0.2, 0.2), start = 1996, geos = c("DE", "FR", "IT", "ES", "NL"), ytick = 10){
inflation <- prc_hicp_aind %>%
filter(unit == "INX_A_AVG",
coicop == CPname,
geo %in% geos) %>%
left_join(geo, by = "geo") %>%
select(geo, Geo, coicop, time, values) %>%
arrange(time) %>%
year_to_date %>%
left_join(colors, by = c("Geo" = "country")) %>%
filter(date >= as.Date(paste0(start, "-01-01"))) %>%
group_by(Geo) %>%
arrange(date) %>%
mutate(values = 100*values/values[1]) %>%
ungroup %>%
mutate(variable = "Price index")
cons <- nama_10_co3_p3 %>%
filter(unit == "PD15_EUR",
geo %in% geos,
coicop == CPname2) %>%
left_join(geo, by = "geo") %>%
year_to_date %>%
filter(date >= as.Date(paste0(start, "-01-01"))) %>%
left_join(colors, by = c("Geo" = "country")) %>%
group_by(Geo) %>%
arrange(date) %>%
mutate(values = 100*values/values[1]) %>%
ungroup %>%
mutate(variable = "Consumption Deflator")
cons %>%
bind_rows(inflation) %>%
ggplot + geom_line(aes(x = date, y = values, color = color, linetype = variable)) +
theme_minimal() +
scale_color_identity() + xlab("") + ylab(CPname) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = legend.position,
legend.title = element_blank()) +
scale_y_log10(breaks = seq(10, 1000, ytick))
}CP00
All
Code
compare_coicop2("CP00", "TOTAL", legend.position = c(0.2, 0.8))
DE, FR
Code
compare_coicop2("CP00", "TOTAL", geos = c("DE", "FR"), legend.position = c(0.2, 0.8))
CP09
Code
prc_hicp_aind %>%
filter(unit == "INX_A_AVG",
coicop %in% c("CP09"),
geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
left_join(geo, by = "geo") %>%
select(geo, Geo, coicop, time, values) %>%
arrange(time) %>%
year_to_date %>%
group_by(Geo) %>%
arrange(date) %>%
mutate(values = 100*values/values[1]) %>%
left_join(colors, by = c("Geo" = "country")) %>%
ggplot(.) + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP09") +
scale_x_date(breaks = seq(1960, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_5flags +
theme(legend.position = "none")
CP08 - Communications
Annual Inflation
Code
inflation_CP08 <- prc_hicp_aind %>%
filter(unit == "INX_A_AVG",
coicop %in% c("CP08"),
geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
left_join(geo, by = "geo") %>%
select(geo, Geo, coicop, time, values) %>%
arrange(time) %>%
year_to_date %>%
left_join(colors, by = c("Geo" = "country")) %>%
group_by(Geo) %>%
arrange(date) %>%
mutate(values = 100*values/values[1]) %>%
ungroup %>%
mutate(variable = "Price index")
inflation_CP08 %>%
ggplot(.) + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP08") +
scale_x_date(breaks = seq(1960, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_5flags +
theme(legend.position = "none")
Annual Consumption Deflator Inflation
Code
cons_CP08 <- nama_10_co3_p3 %>%
filter(unit == "PD15_EUR",
geo %in% c("FR", "NL", "IT", "DE", "ES"),
coicop == "CP08") %>%
left_join(geo, by = "geo") %>%
year_to_date %>%
filter(date >= as.Date("1996-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
group_by(Geo) %>%
arrange(date) %>%
mutate(values = 100*values/values[1]) %>%
ungroup %>%
mutate(variable = "Consumption Deflator")
cons_CP08 %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_5flags +
scale_color_identity() + xlab("") + ylab("Communications (08)") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(10, 300, 10))
Bind
Code
compare_coicop("CP08")
CP081 - Postal services
Bind
Code
compare_coicop("CP081", legend.position = c(0.2, 0.8))
CP0820
Bind
Code
compare_coicop2("CP0820", "CP082", legend.position = c(0.2, 0.8))
CP0830
Bind
Code
compare_coicop2("CP0830", "CP083", legend.position = c(0.2, 0.2))
Annual Consumption Deflator Inflation
Code
cons_CP083 <- nama_10_co3_p3 %>%
filter(unit == "PD15_EUR",
geo %in% c("FR", "NL", "IT", "DE", "ES"),
coicop == "CP083") %>%
left_join(geo, by = "geo") %>%
year_to_date %>%
filter(date >= as.Date("1996-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
group_by(Geo) %>%
arrange(date) %>%
mutate(values = 100*values/values[1]) %>%
ungroup %>%
mutate(variable = "Consumption Deflator")
cons_CP083 %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_5flags +
scale_color_identity() + xlab("") + ylab("Communications (083)") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(10, 300, 10))
CP071
Bind
Code
compare_coicop("CP071", legend.position = c(0.2, 0.8))
CP041
Bind
Code
compare_coicop("CP041", legend.position = c(0.2, 0.8))
1999-
Code
compare_coicop("CP041", legend.position = c(0.2, 0.8), start = 1999)
2000-
Code
compare_coicop("CP041", legend.position = c(0.2, 0.8), start = 2000)
CP01
Bind
Code
compare_coicop("CP01", legend.position = c(0.2, 0.8))
CP02
Bind
Code
compare_coicop("CP02", legend.position = c(0.2, 0.8))
CP022
Bind
Code
compare_coicop("CP022", legend.position = c(0.2, 0.8), ytick = 50)
CP03
Bind
Code
compare_coicop("CP03", legend.position = c(0.2, 0.8))
CP04
Bind
Code
compare_coicop("CP04", legend.position = c(0.2, 0.8))
CP05
Bind
Code
compare_coicop("CP05", legend.position = c(0.2, 0.8))
CP06
Bind
Code
compare_coicop("CP06", legend.position = c(0.2, 0.8))
CP07
Bind
Code
compare_coicop("CP07", legend.position = c(0.2, 0.8))
CP09
Bind
Code
compare_coicop("CP09")
CP091
Bind
Code
compare_coicop("CP091")
CP10
Bind
Code
compare_coicop("CP10", legend.position = c(0.2, 0.8))
CP11
Bind
Code
compare_coicop("CP11", legend.position = c(0.2, 0.8))
CP12
Bind
Code
compare_coicop("CP12", legend.position = c(0.2, 0.8))
CP082_083 - Telephone and telefax equipment
Code
prc_hicp_aind %>%
filter(unit == "INX_A_AVG",
coicop %in% c("CP082_083"),
geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
left_join(geo, by = "geo") %>%
select(geo, Geo, coicop, time, values) %>%
arrange(time) %>%
year_to_date %>%
group_by(Geo) %>%
arrange(date) %>%
mutate(values = 100*values/values[1]) %>%
left_join(colors, by = c("Geo" = "country")) %>%
ggplot(.) + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP082_083") +
scale_x_date(breaks = seq(1960, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_5flags +
theme(legend.position = "none")
CP0820 - Telephone and telefax equipment
Code
prc_hicp_aind %>%
filter(unit == "INX_A_AVG",
coicop %in% c("CP0820"),
geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
left_join(geo, by = "geo") %>%
select(geo, Geo, coicop, time, values) %>%
arrange(time) %>%
year_to_date %>%
group_by(Geo) %>%
arrange(date) %>%
mutate(values = 100*values/values[1]) %>%
left_join(colors, by = c("Geo" = "country")) %>%
ggplot(.) + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP0820 - Telephone and telefax equipment") +
scale_x_date(breaks = seq(1960, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_3flags +
theme(legend.position = "none")
CP091
Code
prc_hicp_aind %>%
filter(unit == "INX_A_AVG",
coicop %in% c("CP091"),
geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
left_join(geo, by = "geo") %>%
select(geo, Geo, coicop, time, values) %>%
arrange(time) %>%
year_to_date %>%
group_by(Geo) %>%
arrange(date) %>%
mutate(values = 100*values/values[1]) %>%
left_join(colors, by = c("Geo" = "country")) %>%
ggplot(.) + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP091") +
scale_x_date(breaks = seq(1960, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_5flags +
theme(legend.position = "none")
CP071 - Cars
Code
prc_hicp_aind %>%
filter(unit == "INX_A_AVG",
coicop %in% c("CP071"),
geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
left_join(geo, by = "geo") %>%
select(geo, Geo, coicop, time, values) %>%
arrange(time) %>%
year_to_date %>%
group_by(Geo) %>%
arrange(date) %>%
mutate(values = 100*values/values[1]) %>%
left_join(colors, by = c("Geo" = "country")) %>%
ggplot(.) + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP071 - Cars") +
scale_x_date(breaks = seq(1960, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_5flags +
theme(legend.position = "none")
CP08202 - Mobile Telephone equipment
Code
prc_hicp_aind %>%
filter(unit == "INX_A_AVG",
coicop %in% c("CP08202"),
geo %in% c("DE", "FR", "IT", "ES", "NL")) %>%
left_join(geo, by = "geo") %>%
select(geo, Geo, coicop, time, values) %>%
arrange(time) %>%
year_to_date %>%
group_by(Geo) %>%
arrange(date) %>%
mutate(values = 100*values/values[1]) %>%
left_join(colors, by = c("Geo" = "country")) %>%
ggplot(.) + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP08202 - Mobile Telephone equipment") +
scale_x_date(breaks = seq(1960, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_5flags +
theme(legend.position = "none")
Greece, Europe, France, Spain, Italy, Germany
2011-2013 -
HICP
Code
prc_hicp_aind %>%
filter(unit == "INX_A_AVG",
coicop == "CP00",
geo %in% c("EL", "FR", "ES", "IT", "DE")) %>%
year_to_date %>%
group_by(geo) %>%
mutate(values = 100*values/values[date == as.Date("2011-01-01")]) %>%
filter(date >= as.Date("2009-01-01"),
date <= as.Date("2016-01-01")) %>%
left_join(geo, by = "geo") %>%
mutate(Geo = ifelse(geo == "EA", "Europe", Geo),
Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
left_join(colors, by = c("Geo" = "country")) %>%
ggplot(.) + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("100 = Janv. 2011") +
scale_x_date(breaks = seq(1960, 2021, 1) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_color_identity() + add_5flags +
scale_y_log10(breaks = seq(0, 200, 2)) +
theme(legend.position = "none",
legend.title = element_blank())
Rents
Code
prc_hicp_aind %>%
filter(unit == "INX_A_AVG",
coicop == "CP041",
geo %in% c("EL", "FR", "ES", "IT", "DE")) %>%
year_to_date %>%
group_by(geo) %>%
mutate(values = 100*values/values[date == as.Date("2011-01-01")]) %>%
filter(date >= as.Date("2009-01-01"),
date <= as.Date("2016-01-01")) %>%
left_join(geo, by = "geo") %>%
mutate(Geo = ifelse(geo == "EA", "Europe", Geo),
Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
left_join(colors, by = c("Geo" = "country")) %>%
ggplot(.) + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("100 = Janv. 2011") +
scale_x_date(breaks = seq(1960, 2021, 1) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_color_identity() + add_5flags +
scale_y_log10(breaks = seq(0, 200, 2)) +
theme(legend.position = "none",
legend.title = element_blank())
Real Rents
Code
prc_hicp_aind %>%
filter(unit == "INX_A_AVG",
coicop %in% c("CP041", "CP00"),
geo %in% c("EL", "FR", "ES", "IT", "DE")) %>%
left_join(geo, by = "geo") %>%
select(geo, Geo, coicop, time, values) %>%
spread(coicop, values) %>%
mutate(values = 100*CP041/CP00) %>%
year_to_date %>%
group_by(geo) %>%
mutate(values = 100*values/values[date == as.Date("2011-01-01")]) %>%
filter(date >= as.Date("2009-01-01"),
date <= as.Date("2016-01-01")) %>%
mutate(Geo = ifelse(geo == "EA", "Europe", Geo),
Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
left_join(colors, by = c("Geo" = "country")) %>%
ggplot(.) + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("Real Rents (100 = Janv. 2011)") +
scale_x_date(breaks = seq(1960, 2021, 1) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_color_identity() + add_5flags +
scale_y_log10(breaks = seq(0, 200, 2)) +
theme(legend.position = "none",
legend.title = element_blank())
Europe - Real Rents
Value
Code
prc_hicp_aind %>%
filter(unit == "INX_A_AVG",
coicop %in% c("CP041", "CP00"),
geo %in% c("EA")) %>%
left_join(tibble(geo = c("EA", "EA18", "EA19"),
Geo = c("Euro Area (time-dep geography)")),
by = "geo") %>%
select(geo, Geo, coicop, time, values) %>%
spread(coicop, values) %>%
mutate(values = 100*CP041/CP00) %>%
year_to_date %>%
ggplot(.) + geom_line(aes(x = date, y = values)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1960, 2100, 5) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_log10(breaks = seq(0, 200, 1)) +
scale_color_manual(values = viridis(5)[1:4]) +
theme(legend.position = c(0.5, 0.85),
legend.title = element_blank())