Installieren und Laden von Paketen

# Benötigte Pakete laden
library(sf) # geo data handling
library(dplyr) # data crunching
library(data.table) # data crunching
library(tidyverse) # data crunching
library(ggplot2) # plots
library(scales) # scale colorscheme
library(ggrepel) # for labeling
library(stats) # for relevelling
library(sjPlot) # plot
library(stargazer) # table


Daten laden

# Arbeitsverzeichnis definieren
setwd(paste0("~/Desktop/Daten, R, Homeworks, etc/Vorbereitung FS DDJ/Daten_DDJ_HS20_Olat"))


# Dateipfad definieren
file_path1 <- "./Corona-Monitor/2-Daten/CoronaMonitorAll.csv"


# Daten einlesen (Corona-Monitor von sotomo)
Corona_Data <- read.csv(file_path1,
                  sep = ",",
                  encoding = "UTF-8",
                  stringsAsFactors = FALSE)


# Dateipfad definieren
file_path2 <- "./Corona-Monitor/2-Daten/kantonnr.csv"


# Nummerierung der Kantone
ktnr <- read.csv(file_path2,
                       sep=";",
                       encoding="UTF-8",
                       stringsAsFactors = F)


# Dateipfad definieren
file_path3 <- "./Corona-Monitor/2-Daten/ag-b-00.03-875-gg20/ggg_2020-LV95/shp/g2k20.shp"


# Shapefile laden (Karte der Schweiz)
cantons_geo <- read_sf(file_path3)


Karte 1: Vertrauen

# Datensatz für Karte zu Vertrauen erstellen und strukturieren
all_trust <- Corona_Data %>% 
  mutate(vertrauenNum = as.numeric(stringr::str_extract(vertrauen, "[0-9]+"))) %>%
  group_by(Welle, kanton) %>%
  mutate(trust = weighted.mean(vertrauenNum , na.rm=T, weight = weight)) %>% 
  subset(kanton != "- Auslandschweizer/in -") %>% 
  # Auslandschweizer*innen exkludieren; werden für die Analyse nicht gebraucht
  select(kanton, trust, Welle) %>%
  distinct() %>% 
            left_join(
            ktnr, by = c("kanton" = "Kanton")) %>%
            mutate(Date = case_when(Welle == 1 ~ "21.03. - 23.03.",
                                    Welle == 2 ~ "03.04. - 06.04.",
                                    Welle == 3 ~ "02.05. - 05.05.",
                                    Welle == 4 ~ "05.06. - 08.06.",
                                    Welle == 5 ~ "23.10. - 02.11."))

all_trust$Date <- factor(all_trust$Date, levels = unique(all_trust$Date[order(all_trust$Welle)]))


# Datensatz an Schweizerkarte anbinden
all_trust <- left_join(cantons_geo, all_trust,
                       by = c("KTNR" = "ktnr"))


# Karte erstellen
map_trust <- ggplot() + 
  geom_sf(data = cantons_geo,
    aes(), fill = "#FCFCFC", color = "#666666", size = 0.4) +
  geom_sf(data = all_trust, aes(fill = trust), color = "black", size = 0.08) +
  scale_fill_gradient(low = "#b7beed", high = "#2339c2",
                       na.value = "grey50",
                       limits = c(min(all_trust$trust), max(all_trust$trust)), 
                       oob = squish, 
                       breaks = c(2.8, 3.2, 3.6, 4.0),
                       labels = c("2.8: Eher kleines Vertrauen","3.2", "3.6", 
                         "4.0: Eher grosses Vertrauen")) +
  theme_void() +
  theme(panel.grid.major = element_line("transparent")) +
  labs(title = "In der zweiten Corona-Welle hat der Bundesrat viel Vertrauen\nin der Bevökerung verloren\n",
       fill = "Stärke des Vertrauens", 
       caption = "\nFrage: «Wie gross ist Ihr Vertrauen in die politische Führung der Schweiz in Bezug auf\ndie Bewältigung der Corona-Krise?» (1 = «sehr klein» bis 5 = «sehr gross»)\nDaten: Forschungsstelle sotomo (Corona-Monitor 2020)") +
  theme(plot.title = element_text(size = 10, face = "bold", hjust = 0), 
        plot.caption = element_text(size = 7, hjust = 0)) +
  theme(legend.position = c(0.75, 0.175)) +
  facet_wrap(~Date, nrow = 3, ncol = 2)

map_trust