Production in construction - monthly data - sts_copr_m

Data - Eurostat

nace_r2

Code
sts_copr_m %>%
  left_join(nace_r2, by = "nace_r2") %>%
  group_by(nace_r2, Nace_r2) %>%
  summarise(Nobs = n()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

s_adj

Code
sts_copr_m %>%
  left_join(s_adj, by = "s_adj") %>%
  group_by(s_adj, S_adj) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
s_adj S_adj Nobs
SCA Seasonally and calendar adjusted data 130199
CA Calendar adjusted data, not seasonally adjusted data 128557
NSA Unadjusted data (i.e. neither seasonally adjusted nor calendar adjusted data) 67972

unit

Code
sts_copr_m %>%
  left_join(unit, by = "unit") %>%
  group_by(unit, Unit) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
unit Unit Nobs
I21 Index, 2021=100 93333
I15 Index, 2015=100 91335
PCH_PRE Percentage change on previous period 49351
PCH_SM Percentage change compared to same period in previous year 47469
I10 Index, 2010=100 45240

indic_bt

Code
sts_copr_m %>%
  left_join(indic_bt, by = "indic_bt") %>%
  group_by(indic_bt, Indic_bt) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
indic_bt Indic_bt Nobs
PRD Production (volume) 326728

geo

Code
sts_copr_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
sts_copr_m %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Construction Production

France, Germany, Italy

Code
sts_copr_m %>%
  filter(nace_r2 == "F",
         unit == "I15",
         geo %in% c("FR", "DE", "IT"),
         s_adj == "SCA") %>%
  select(geo, time, values) %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[time == "1997M01"]) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  month_to_date %>%
  ggplot() + ylab("Construction Production") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = Geo)) +
  scale_color_manual(values = c("#0055a4", "#000000", "#008c45")) +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2007-01-01")) %>%
               mutate(date = as.Date("2007-01-01"),
                      image = paste0("../../icon/flag/", str_to_lower(Geo), ".png")),
             aes(x = date, y = values, image = image), asp = 1.5) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(-60, 300, 10))

Covid-19

Table

Code
sts_copr_m %>%
  filter(nace_r2 == "F",
         unit == "I15",
         s_adj == "SCA",
         time %in% c("2019M11", "2020M02", "2020M03", "2020M04", "2020M05", "2020M08", "2020M11"),
         !(geo %in% c("IE", "EU28"))) %>%
  select(geo, time, values) %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[time == "2019M11"]) %>%
  left_join(geo, by = "geo") %>%
  spread(time, values) %>%
  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()) %>%
  arrange(`2020M04`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

2018

Code
sts_copr_m %>%
  filter(nace_r2 == "F",
         unit == "I15",
         geo %in% c("FR", "DE", "IT"),
         s_adj == "SCA") %>%
  select(geo, time, values) %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[time == "2018M01"]) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  month_to_date %>%
  filter(date >= as.Date("2018-01-01")) %>%
  ggplot() + ylab("Construction Production") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = Geo)) +
  scale_color_manual(values = c("#0055a4", "#000000", "#008c45")) +
  scale_x_date(breaks = "3 months",
               labels = date_format("%b %y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2020-08-01")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(Geo), ".png")),
             aes(x = date, y = values, image = image), asp = 1.5) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(-60, 300, 10))

2019M09

Code
sts_copr_m %>%
  filter(nace_r2 == "F",
         unit == "I15",
         geo %in% c("FR", "DE", "IT"),
         s_adj == "SCA") %>%
  select(geo, time, values) %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[time == "2019M09"]) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  month_to_date %>%
  filter(date >= as.Date("2019-09-01")) %>%
  ggplot() + ylab("Construction Production") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = Geo)) +
  scale_color_manual(values = c("#0055a4", "#000000", "#008c45")) +
  scale_x_date(breaks = "2 months",
               labels = date_format("%b %y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2020-08-01")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(Geo), ".png")),
             aes(x = date, y = values, image = image), asp = 1.5) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(-60, 300, 10))

2020M02

Code
sts_copr_m %>%
  filter(nace_r2 == "F",
         unit == "I15",
         geo %in% c("FR", "DE", "IT", "ES"),
         s_adj == "SCA") %>%
  select(geo, time, values) %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[time == "2020M02"]) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  month_to_date %>%
  filter(date >= as.Date("2020-02-01")) %>%
  ggplot() + ylab("Construction Production") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = Geo)) +
  scale_color_manual(values = c("#0055a4", "#000000", "#008c45", "#C60B1E")) +
  scale_x_date(breaks = "1 month",
               labels = date_format("%b %y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2020-08-01")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(Geo), ".png")),
             aes(x = date, y = values, image = image), asp = 1.5) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(-60, 300, 10))

Cumulative loss in production

Code
sts_copr_m %>%
  filter(nace_r2 == "F",
         unit == "I15",
         geo %in% c("FR", "DE", "IT", "ES"),
         s_adj == "SCA") %>%
  select(geo, time, values) %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[time == "2020M02"]) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("2020-02-01")) %>%
  group_by(Geo) %>%
  arrange(date) %>%
  mutate(values = values-100,
         values = cumsum(values)) %>%
  ggplot() + ylab("Construction Production") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = Geo)) +
  scale_color_manual(values = c("#0055a4", "#000000", "#008c45", "#C60B1E")) +
  scale_x_date(breaks = "1 month",
               labels = date_format("%b %y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2020-06-01")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(Geo), ".png")),
             aes(x = date, y = values, image = image), asp = 1.5) +
  theme(legend.position = "none") +
  scale_y_continuous(breaks = seq(-300, 300, 10))