Commit de635f9a authored by Markus Mößler's avatar Markus Mößler
Browse files

added material for practical class on rmarkdown into a seperate repostiory

parent 143118db
Loading
Loading
Loading
Loading

.gitignore

0 → 100644
+4 −0
Original line number Diff line number Diff line
.Rproj.user
.Rhistory
.RData
.Ruserdata
+6.4 KiB

File added.

No diff preview for this file type.

+40.2 KiB

File added.

No diff preview for this file type.

+75 −0
Original line number Diff line number Diff line

# -> 0) set up
rm(list=ls())

library(OECD)
library(dplyr)
library(zoo)
library(ggplot2)
library(plotly)

# -> 0) load data structure for qna
dataset <- "qna"
url <- paste0("https://stats.oecd.org/restsdmx/sdmx.ashx/GetDataStructure/", dataset)
data_structure <- readsdmx::read_sdmx(url)
data_structure %>%
  filter(id == c("CL_QNA_SUBJECT"),
         value %in% c("B1G", "B1GVA", "B1GVB_E", "B1GVF", "B1GVG_I", "B1GVJ", "B1GVK", "B1GVL", "B1GVM_N", "B1GVO_Q", "B1GVR_U")) %>%
  select(value, en_description) %>%
  kable(col.names = c("Code", "Description"))

# -> 1) load data

dataset <- "QNA"
start_time <- as.Date("2010-01-01")
end_time <- as.Date("2023-10-01")
# Note: Q1: 2020-01-01; Q2: 2020-04-01; Q3: 2020-07-01; Q4: 2020-10-01
filter = list(LOCATION = c("DEU", "FRA"),
              SUBJECT = c("B1G", "B1GVA", "B1GVB_E", "B1GVF", "B1GVG_I", "B1GVJ", "B1GVK", "B1GVL", "B1GVM_N", "B1GVO_Q", "B1GVR_U"),
              MEASURE = c("LNBQRSA"),
              FREQUENCY = c("Q"))

qna_dat <- get_dataset(dataset, filter, start_time, end_time)

# check
head(qna_dat)
tail(qna_dat)

# save original data
save(qna_dat, file = "./01_data/qna_dat_00.RData")

# handle values
class(qna_dat$ObsValue)
qna_dat$ObsValue <- as.numeric(qna_dat$ObsValue)

# handle dates
class(qna_dat$Time)
qna_dat$TIME <- as.yearqtr(qna_dat$Time, "%Y-Q%q")

# check
head(qna_dat)
tail(qna_dat)

# transform data ----
qna_dat <- qna_dat %>%
  left_join(
    qna_dat %>%
      filter(SUBJECT == "B1G") %>%
      select(LOCATION, Time, ObsValue) %>%
      rename(B1G_lev = ObsValue),
    by = c("LOCATION", "Time")
  ) %>%
  group_by(LOCATION, SUBJECT) %>%
  mutate(
    lev = ObsValue,
    gro = (lev - lag(lev))/lag(lev)*100,
    sha = (lev)/B1G_lev*100,
    gro_con = gro*lag(lev)/lag(B1G_lev)
  )

# check 
head(qna_dat)
tail(qna_dat)

# save transformed data ----
save(qna_dat, file = "./01_data/qna_dat_01.RData")
+92 −0
Original line number Diff line number Diff line

# -> 0) set up
rm(list=ls())

library(OECD)
library(dplyr)
library(zoo)
library(ggplot2)
library(plotly)

# -> 1) load data

# load transformed data
load("../01_data/qna_dat_01.RData")

# visualize data no 1 ----

# Germany, contribution to growth
plot_ger <- qna_dat %>%
  filter(LOCATION %in% c("DEU")) %>%
  ggplot(aes(x = TIME, y = gro_con)) + 
  geom_bar(data = . %>% filter(SUBJECT %in% c("B1GVA", "B1GVB_E", "B1GVF", "B1GVG_I", "B1GVJ", "B1GVK", "B1GVL", "B1GVM_N", "B1GVO_Q", "B1GVR_U")),
           aes(fill = SUBJECT), 
           position = "stack", 
           stat = "identity") +
  geom_point(data = . %>% filter(SUBJECT %in% c("B1G")),
             aes(y = gro, group = SUBJECT), size = 0.5) + 
  geom_line(data = . %>% filter(SUBJECT %in% c("B1G")),
            aes(y = gro, group = SUBJECT), size = 0.5) +
  scale_fill_discrete(name = "", 
                      labels = c("B1GVA", "B1GVB_E", "B1GVF", "B1GVG_I", "B1GVJ", "B1GVK", "B1GVL", "B1GVM_N", "B1GVO_Q", "B1GVR_U")) +
  scale_x_yearqtr(
    breaks = seq(from = min(qna_dat$TIME), to = max(qna_dat$TIME), by = 1),
    minor_breaks = seq(from = min(qna_dat$TIME), to = max(qna_dat$TIME), by = 1/4),
    format = "%Y-Q%q",
    expand = c(0, 0)
  ) +
  scale_y_continuous(
    breaks = seq(from = -20, to = 20, by = 2),
    minor_breaks = seq(from = -20, to = 20, by = 1)
  ) +
  labs(
    title = "QNA - Output Components (growth rate (line) contribution to growth rate (bars))",
    subtitle = paste0("Last observation: ", max(qna_dat$TIME)),
    caption = "Source: OECD",
    x = "", y = "QoQ change in % (line) and contribution in %-points (bars)"
  ) +
  scale_color_discrete(name = "", 
                       labels = c("B1GVA", "B1GVB_E", "B1GVF", "B1GVG_I", "B1GVJ", "B1GVK", "B1GVL", "B1GVM_N", "B1GVO_Q", "B1GVR_U")) +
  theme(legend.position = "bottom")

# Framce, contribution to growth
plot_fra <- qna_dat %>%
  filter(LOCATION %in% c("FRA")) %>%
  ggplot(aes(x = TIME, y = gro_con)) + 
  geom_bar(data = . %>% filter(SUBJECT %in% c("B1GVA", "B1GVB_E", "B1GVF", "B1GVG_I", "B1GVJ", "B1GVK", "B1GVL", "B1GVM_N", "B1GVO_Q", "B1GVR_U")),
           aes(fill = SUBJECT), 
           position = "stack", 
           stat = "identity") +
  geom_point(data = . %>% filter(SUBJECT %in% c("B1G")),
             aes(y = gro, group = SUBJECT), size = 0.5) + 
  geom_line(data = . %>% filter(SUBJECT %in% c("B1G")),
            aes(y = gro, group = SUBJECT), size = 0.5) +
  scale_fill_discrete(name = "", 
                      labels = c("B1GVA", "B1GVB_E", "B1GVF", "B1GVG_I", "B1GVJ", "B1GVK", "B1GVL", "B1GVM_N", "B1GVO_Q", "B1GVR_U")) +
  scale_x_yearqtr(
    breaks = seq(from = min(qna_dat$TIME), to = max(qna_dat$TIME), by = 1),
    minor_breaks = seq(from = min(qna_dat$TIME), to = max(qna_dat$TIME), by = 1/4),
    format = "%Y-Q%q",
    expand = c(0, 0)
  ) +
  scale_y_continuous(
    breaks = seq(from = -20, to = 20, by = 2),
    minor_breaks = seq(from = -20, to = 20, by = 1)
  ) +
  labs(
    title = "QNA - Output Components (growth rate (line) contribution to growth rate (bars))",
    subtitle = paste0("Last observation: ", max(qna_dat$TIME)),
    caption = "Source: OECD",
    x = "", y = "QoQ change in % (line) and contribution in %-points (bars)"
  ) +
  scale_color_discrete(name = "", 
                       labels = c("B1GVA", "B1GVB_E", "B1GVF", "B1GVG_I", "B1GVJ", "B1GVK", "B1GVL", "B1GVM_N", "B1GVO_Q", "B1GVR_U")) +
  theme(legend.position = "bottom")

# visualize data no 2 ----

# Germany, contribution to growth
ggplotly(plot_ger)

# France, contribution to growth
ggplotly(plot_fra)
Loading