Cooling and heating degree days by country - monthly data

Data - Eurostat

Info

source dataset Title .html .rData
eurostat nrg_chdd_m Cooling and heating degree days by country - monthly data 2025-10-10 2025-09-26

Data on energy

source dataset Title .html .rData
ec WOB Weekly Oil Bulletin 2025-08-28 2024-08-25
eurostat ei_isen_m Energy - monthly data 2025-10-10 2025-09-26
eurostat nrg_bal_c Complete energy balances 2023-12-31 2025-10-10
eurostat nrg_pc_202 Gas prices for household consumers - bi-annual data (from 2007 onwards) 2025-10-10 2025-10-10
eurostat nrg_pc_203 Gas prices for non-household consumers - bi-annual data (from 2007 onwards) 2023-06-11 2025-10-09
eurostat nrg_pc_203_c Gas prices components for non-household consumers - annual data 2025-10-10 2025-10-10
eurostat nrg_pc_203_h Gas prices for industrial consumers - bi-annual data (until 2007) 2025-10-10 2025-10-09
eurostat nrg_pc_203_v Non-household consumption volumes of gas by consumption bands 2025-10-10 2025-10-10
eurostat nrg_pc_204 Electricity prices for household consumers - bi-annual data (from 2007 onwards) 2025-10-10 2025-10-11
eurostat nrg_pc_205 Electricity prices for non-household consumers - bi-annual data (from 2007 onwards) 2023-06-11 2025-10-10
fred energy Energy 2025-10-09 2025-10-09
iea world_energy_balances_highlights_2022 World Energy Balances Highlights (2022 edition) 2024-06-20 2023-04-24
wb CMO World Bank Commodity Price Data (The Pink Sheet) 2025-08-24 2025-08-24
wdi EG.GDP.PUSE.KO.PP.KD GDP per unit of energy use (constant 2017 PPP $ per kg of oil equivalent) 2025-10-10 2025-09-27
wdi EG.USE.PCAP.KG.OE Energy use (kg of oil equivalent per capita) 2025-10-10 2025-09-27
yahoo energy Energy 2025-09-22 2025-10-11

LAST_COMPILE

LAST_COMPILE
2025-10-11

Last

Code
nrg_chdd_m %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(1) %>%
  print_table_conditional()
time Nobs
2024M12 58

indic_nrg

Code
nrg_chdd_m %>%
  left_join(indic_nrg, by = "indic_nrg") %>%
  group_by(indic_nrg, Indic_nrg) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
indic_nrg Indic_nrg Nobs
CDD Cooling degree days 16008
HDD Heating degree days 16008

geo

Code
nrg_chdd_m %>%
  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
nrg_chdd_m %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  print_table_conditional()

Heating degree days

Germany

All

Code
nrg_chdd_m %>%
  filter(geo == "DE",
         indic_nrg == "HDD") %>%
  month_to_date %>%
  ggplot + geom_line(aes(x = date, y = values)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 5), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(0, 1000, 100))

2015-

Code
nrg_chdd_m %>%
  filter(geo == "DE",
         indic_nrg == "HDD") %>%
  month_to_date %>%
  filter(date >= as.Date("2015-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = values)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2025, 1), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(0, 1000, 100))