Dieses Dokument enthält den Code für die Datenanalyse und Erstellung der Grafiken, welche als Grundlage für den Artikel: “Abstimmungen während Corona” dienen. Der Artikel wurde im Rahmen des Forschungsseminars Politischer Datenjournalismus erstellt. Die Datenverarbeitung wurde in R Studio und R Markdown durchgeführt.
dicttwitter <- dictionary(list(Begrenzung=c("begrenzung*","personenfreizügigkeit*",
"bilateral*","bgi*","kündigung*",
"begrenzungsinitiativeja",
"begrenzungsinitiativenein"),
Kampfjet=c("filair2030","bodluf*","avionsdecombat",
"avionsdechasse","kampffl*","kampfjet*","nkf",
"air2030","flugzeugbeschaffung","sicherheitja",
"neuekampfflugzeuge*","mehrstutzmehrfreiheit"),
Vaterschaftsurlaub=c("*vaterschaftsurlaub*","elternzeitinitiative*",
"papizeit*","papiurlaub*"),
Kinderabzüge=c("*lohnabzüge*","kinderabzug*","kinderabzüg*",
"kinderdrittbetreuungskosten"),
Jagdgesetz=c("jagdgesetz*","abschussgesetz*",
"jazumjagdgesetz")))
dictsmd <- dictionary(list(Begrenzung=c("begrenzungsinitiative","für eine massvolle zuwanderung"),
Kampfjet=c("kampfjet*","kampfflugzeug*","Flugzeugbeschaffung*"),
Vater=c("vaterschaftsurlaub","elternzeitinitiative*"),
Kinderabzug=c("kinderabzüg*","Kinderabzug*","kinderdrittbetreuungskosten"),
Jagdgesetz=c("jagdgesetz")))
pattern_allg <- c("begrenzungsinitiative","für eine massvolle zuwanderung",
"kampfjet","Kampfflugzeug","Flugzeugbeschaffung",
"vaterschaftsurlaub","elternzeitinitiative",
"kinderabzüge","Kinderabzug*","kinderdrittbetreuungskosten",
"jagdgesetz","27. September")
pattern_begr <- c("begrenzungsinitiative","für eine massvolle zuwanderung")
pattern_jets <- c("kampfjet","Kampfflugzeug","Flugzeugbeschaffung")
pattern_vater <- c("vaterschaftsurlaub","elternzeitinitiative")
pattern_kind <- c("kinderabzüge","Kinderabzug","kinderdrittbetreuungskosten")
pattern_jagd <- c("jagdgesetz")
zeitungen <- readRDS("zeitungsartikel_de_2020.RDS")
zeitungscorp <- corpus(zeitungen,text_field="tx")
zeitungstoks <- tokens(zeitungscorp,remove_punct=T)
results_dict <- tokens_lookup(zeitungstoks, dictsmd)
#Create a dfm and dataframe for the SMD data
results_dfm <- results_dict %>%
tokens_tolower() %>%
tokens_remove(., stopwords("de")) %>%
tokens_remove(., "dass") %>%
dfm()
results_df <- results_dfm %>%
convert("data.frame") %>%
bind_cols(docvars(zeitungstoks))
results_df2 <- results_df %>%
gather(key = Vorlage, value = Value, 2:6)
results_df2$week <- lubridate::week(results_df2$pubDateTime)
library(streamgraph)
smdplot <- results_df2 %>%
group_by(pubDateTime, Vorlage) %>%
tally(wt=Value) %>%
streamgraph("Vorlage", "n", "pubDateTime") %>%
sg_axis_x() %>%
sg_legend(show=TRUE, label="Vorlage: ") %>%
sg_fill_manual(viridis(5))
twitter <- readRDS("abstimmungen_mai-sept_2020.RDS")
twitter <- tibble::rowid_to_column(twitter, "ID")
twitter <- twitter %>% select(ID,user_id,created_at,screen_name,text,mentions_screen_name,hashtags)
twitter$created_at <- lubridate::date(twitter$created_at)
twitter <- as.data.frame(twitter)
twittercorp <- corpus(twitter)
toks_tweets <- tokens(twittercorp, remove_punct = TRUE)
toks_tweets <- tokens_tolower(toks_tweets)
dfmat_tweets <- dfm(toks_tweets)
dicttwitter <- dictionary(list(Begrenzung=c("begrenzung*","personenfreizügigkeit*",
"bilateral*","bgi*","kündigung*",
"begrenzungsinitiativeja",
"begrenzungsinitiativenein"),
Kampfjet=c("filair2030","bodluf*","avionsdecombat",
"avionsdechasse","kampffl*","kampfjet*","nkf",
"air2030","flugzeugbeschaffung","sicherheitja",
"neuekampfflugzeuge*","mehrstutzmehrfreiheit"),
Vaterschaftsurlaub=c("*vaterschaftsurlaub*","elternzeitinitiative*",
"papizeit*","papiurlaub*"),
Kinderabzüge=c("*lohnabzüge*","kinderabzug*","kinderabzüg*",
"kinderdrittbetreuungskosten"),
Jagdgesetz=c("jagdgesetz*","abschussgesetz*",
"jazumjagdgesetz")))
lookup_dict <- tokens_lookup(toks_tweets,
dicttwitter)
twitter_dfm <- lookup_dict %>%
dfm()
tdf <- twitter_dfm %>%
convert("data.frame") %>%
bind_cols(docvars(lookup_dict))
tdf2 <- tdf %>%
gather(key = Vorlage, value = Value, 2:6)
tdf2$week <- lubridate::week(tdf2$created_at)
library(streamgraph)
pp <- tdf2 %>%
group_by(created_at, Vorlage) %>%
tally(wt=Value) %>%
streamgraph("Vorlage", "n", "created_at") %>%
sg_axis_x() %>%
sg_legend(show=TRUE, label="Vorlage: ") %>%
sg_fill_manual(viridis(5))
pattern_bgi <- c("begrenzung*","personenfreizügigkeit*",
"bilateral*","bgi*","kündigung*",
"begrenzungsinitiativeja",
"begrenzungsinitiativenein")
corp_bgi <- corpus_subset(twittercorp, grepl(paste(pattern_bgi, collapse="|"),
ignore.case = T, texts(twittercorp)))
bgi_toks <- tokens(corp_bgi)
bgi_toks <- bgi_toks %>%
tokens_remove(stopwords("de")) %>%
tokens_remove(stopwords("en")) %>%
tokens_remove(stopwords("fr")) %>%
tokens_select(pattern = c("#","@"), selection = "remove")
bgi_dfm <- dfm(bgi_toks,tolower=TRUE, remove_punct = TRUE, remove_url=TRUE,
remove= "dass", verbose=TRUE)
bgifreq<-textstat_frequency(bgi_dfm,n=30)
wordcloud_bgi <- textplot_wordcloud(bgi_dfm,rotation = 0.25,
color = viridis(60),
max_words=60,min_size=1.5)
pattern_jets <- c("filair2030","bodluf*","avionsdecombat",
"avionsdechasse","kampffl*","kampfjet*","nkf",
"air2030","flugzeugbeschaffung","sicherheitja",
"neuekampfflugzeuge*","mehrstutzmehrfreiheit")
corp_jets <- corpus_subset(twittercorp, grepl(paste(pattern_jets, collapse="|"),
ignore.case = T, texts(twittercorp)))
jets_toks <- tokens(corp_jets)
jets_toks <- jets_toks %>%
tokens_remove(stopwords("de")) %>%
tokens_remove(stopwords("en")) %>%
tokens_remove(stopwords("fr")) %>%
tokens_select(pattern = c("#","@"), selection = "remove")
jets_dfm <- dfm(jets_toks,tolower=TRUE, remove_punct = TRUE, remove_url=TRUE,
remove= "dass", verbose=TRUE)
jetsfreq<-textstat_frequency(jets_dfm,n=30)
jetsfreq
wordcloud_jets <- textplot_wordcloud(jets_dfm,rotation = 0.25,
color = viridis(60),
max_words=60,min_size=1.5)
pattern_vater <- c("*vaterschaftsurlaub*","elternzeitinitiative*",
"papizeit*","papiurlaub*")
corp_vater <- corpus_subset(twittercorp, grepl(paste(pattern_vater, collapse="|"),
ignore.case = T, texts(twittercorp)))
vater_toks <- tokens(corp_vater)
vater_toks <- vater_toks %>%
tokens_remove(stopwords("de")) %>%
tokens_remove(stopwords("en")) %>%
tokens_remove(stopwords("fr")) %>%
tokens_select(pattern = c("#","@"), selection = "remove")
vater_dfm <- dfm(vater_toks,tolower=TRUE, remove_punct = TRUE, remove_url=TRUE,
remove= "dass", verbose=TRUE)
vaterfreq<-textstat_frequency(vater_dfm,n=30)
vaterfreq
wordcloud_vater <- textplot_wordcloud(vater_dfm,rotation = 0.25,
color = viridis(60),
max_words=60,min_size=1.5)
pattern_kinder <- c("*lohnabzüge*","kinderabzug*","kinderabzüg*",
"kinderdrittbetreuungskosten")
corp_kinder <- corpus_subset(twittercorp, grepl(paste(pattern_kinder, collapse="|"),
ignore.case = T, texts(twittercorp)))
kinder_toks <- tokens(corp_kinder)
kinder_toks <- kinder_toks %>%
tokens_remove(stopwords("de")) %>%
tokens_remove(stopwords("en")) %>%
tokens_remove(stopwords("fr")) %>%
tokens_select(pattern = c("#","@"), selection = "remove")
kinder_dfm <- dfm(kinder_toks,tolower=TRUE, remove_punct = TRUE, remove_url=TRUE,
remove= "dass", verbose=TRUE)
kinderfreq<-textstat_frequency(kinder_dfm,n=30)
kinderfreq
wordcloud_kinder <- textplot_wordcloud(kinder_dfm,rotation = 0.25,
color = viridis(60),
max_words=60,min_size=1.5)
pattern_jagd <- c("jagdgesetz*","abschussgesetz*",
"jazumjagdgesetz")
corp_jagd <- corpus_subset(twittercorp, grepl(paste(pattern_jagd, collapse="|"),
ignore.case = T, texts(twittercorp)))
jagd_toks <- tokens(corp_jagd)
jagd_toks <- jagd_toks %>%
tokens_remove(stopwords("de")) %>%
tokens_remove(stopwords("en")) %>%
tokens_remove(stopwords("fr")) %>%
tokens_select(pattern = c("#","@"), selection = "remove")
jagd_dfm <- dfm(jagd_toks,tolower=TRUE, remove_punct = TRUE, remove_url=TRUE,
remove= "dass", verbose=TRUE)
jagdfreq<-textstat_frequency(jagd_dfm,n=30)
jagdfreq
wordcloud_jagd <- textplot_wordcloud(jagd_dfm,rotation = 0.25,
color = viridis(60),
max_words=60,min_size=1.5)