rm(list = ls())
setwd("~/Studium/Politikwissenschaft_Master/Forschungsseminar/Politischer Datenjournalismus/Blogpost/R")
Needed libraries for scraping & Dataframe
# library(httr)
# library(jsonlite)
# library(RSelenium)
# library(rvest)
# library(xml2)
# library(yaml)
# library(dplyr)
# library(gender)
# df <- setNames(data.frame(matrix(ncol = 9, nrow = 0)),
# c("name", "sex", "party", "id", "date", "type", "titel", "category", "rat"))
open rselenium
#remDr <- RSelenium::remoteDriver(port = 4444L, remoteServerAddr = "192.168.1.213")
# rD <- RSelenium::rsDriver(browser="chrome", port= 4805L, chromever = "96.0.4664.45", verbose = FALSE)
# remDr <- rD[["client"]]
# remDr$open(silent = TRUE)
# remDr$setTimeout(type = "implicit", milliseconds = 3000)
# base_url <- "https://www.parlament.ch/de/ratsbetrieb/suche-curia-vista/geschaeft?AffairId="
open Chrome & scrape Website parlament.ch
# start_id = # 20214331; 20204738; 20194641; 20184411; 20174324
# end_id = # 20213000; 20203000; 20193000; 20183000; 20173979
# for (id in start_id:end_id) {
# url <- paste(base_url, id, sep = "")
# print(url)
# remDr$navigate(url)
# Partei
# party <- NA
# tryCatch(expr = {
# party_element <- remDr$findElement(using = "xpath", "/html/body/form/div[4]/div/div/div[5]/div[1]/div[1]/div[2]/div/div/div/div[2]/div[1]/article/div[2]/div[1]/div/p[2]")
# party <- party_element$getElementText()
# }, error = function(e){})
# Geschäft
# id_element <- remDr$findElement(using = "xpath", "/html/body/form/div[4]/div/div/div[5]/div[1]/div[1]/div[2]/div/div/div/div[2]/div[1]/article/div[1]/header/span[1]")
# id <- id_element$getElementText()
# Datum
# date_element <- remDr$findElement(using = "xpath", "/html/body/form/div[4]/div/div/div[5]/div[1]/div[1]/div[2]/div/div/div/div[2]/div[1]/article/div[2]/div[3]/div")
# date <- date_element$getElementText()
# Geschäftstyp
# type_element <- remDr$findElement(using = "xpath", "/html/body/form/div[4]/div/div/div[5]/div[1]/div[1]/div[2]/div/div/div/div[2]/div[1]/article/div[1]/header/span[2]")
# type <- type_element$getElementText()
# Titel
# titel_element <- remDr$findElement(using = "xpath",
# "/html/body/form/div[4]/div/div/div[5]/div[1]/div[1]/div[2]/div/div/div/div[2]/div[1]/article/div[1]/header/h2")
# titel <- titel_element$getElementText()
# Kategorie
# category <- NA
# tryCatch(expr = {
# category_element <- remDr$findElement(using = "xpath", "/html/body/form/div[4]/div/div/div[5]/div[1]/div[1]/div[2]/div/div/div/div[2]/div[5]/div/div[2]/div[2]/div/div[5]/p")
# category <- category_element$getElementText()
# }, error = function(e){})
# Rat
# rat_element <- remDr$findElement(using = "xpath", "/html/body/form/div[4]/div/div/div[5]/div[1]/div[1]/div[2]/div/div/div/div[2]/div[1]/article/div[2]/div[4]/div")
# rat <- rat_element$getElementText()
# Name
# name <- NA
# tryCatch(expr = {
# person_element <- remDr$findElement(using = "xpath", "/html/body/form/div[4]/div/div/div[5]/div[1]/div[1]/div[2]/div/div/div/div[2]/div[1]/article/div[2]/div[1]/div/a[2]")
# person <- person_element$clickElement()
# name_element <- remDr$findElement(using = "xpath", "/html/body/form/div[4]/div/div/div[4]/div[1]/div/div[2]/div/div/div/div[1]/div/div[1]/div[2]/h2")
# name <- name_element$getElementText()
# }, error = function(e){})
# Gender
# sex <- NA
# if (!is.na(name) ) {
# name_unlist <- unlist(name)
# nameSplit <- strsplit(name_unlist, split = " ")
# firstname <- nameSplit[[1]] [[1]]
# sex_2 <- gender(firstname, method = c("genderize"))
# sex <- sex_2$gender}
# Data Frame - Step 1
# a <- data.frame(name, sex, party, id, date, type, titel, category, rat)
# Naming the Data Frame - Step 2
# names(a) <- c("name", "sex", "party", "id", "date", "type", "titel", "category", "rat")
# Using rbind() function to insert above observation
# df <- rbind(df, a)
#}
Close Chrome
# remDr$closeServer()
# write.csv2(df,"df_vuk.csv", row.names = FALSE, fileEncoding = "UTF-8")
Insert Dataframe
<- "df_vuk.csv"
path <-read.csv(path,
parlament sep=";",
encoding = "UTF-8",
stringsAsFactors = FALSE)
Remove all rows that are no person, that are duplicates or somehow scraped wrong
library(tidyr)
library(dplyr)
##
## Attache Paket: 'dplyr'
## Die folgenden Objekte sind maskiert von 'package:stats':
##
## filter, lag
## Die folgenden Objekte sind maskiert von 'package:base':
##
## intersect, setdiff, setequal, union
<- parlament %>%
parlament_2 ::rename(name = X.U.FEFF.name) %>%
dplyrdrop_na(name) %>%
filter(rat == "Ständerat" | rat == "Nationalrat")
<- parlament_2[!duplicated(parlament_2$id),] parlament_3
Turn date from character to date
$date <- as.Date(parlament_3$date, "%d.%m.%Y") parlament_3
Filter all name with NA gender
is.na(parlament_3$sex), 1] parlament_3[
## [1] "Adèle Thorens Goumaz" "Niklaus-Samuel Gugger" "Niklaus-Samuel Gugger"
## [4] "Niklaus-Samuel Gugger" "Léonore Porchet" "Léonore Porchet"
## [7] "Niklaus-Samuel Gugger" "Léonore Porchet" "Niklaus-Samuel Gugger"
## [10] "Niklaus-Samuel Gugger" "Adèle Thorens Goumaz" "Irène Kälin"
## [13] "Léonore Porchet" "Léonore Porchet" "Adèle Thorens Goumaz"
## [16] "Léonore Porchet" "Léonore Porchet" "Léonore Porchet"
## [19] "Niklaus-Samuel Gugger" "Niklaus-Samuel Gugger" "Léonore Porchet"
## [22] "Léonore Porchet" "Léonore Porchet" "Léonore Porchet"
## [25] "Léonore Porchet" "Léonore Porchet" "Léonore Porchet"
## [28] "Niklaus-Samuel Gugger" "Irène Kälin" "Niklaus-Samuel Gugger"
## [31] "Irène Kälin" "Léonore Porchet" "Adèle Thorens Goumaz"
## [34] "Niklaus-Samuel Gugger" "Léonore Porchet" "Léonore Porchet"
## [37] "Léonore Porchet" "Irène Kälin" "Léonore Porchet"
## [40] "Niklaus-Samuel Gugger" "Niklaus-Samuel Gugger" "Léonore Porchet"
## [43] "Irène Kälin" "Adèle Thorens Goumaz" "Léonore Porchet"
## [46] "Adèle Thorens Goumaz" "Léonore Porchet" "Irène Kälin"
## [49] "Léonore Porchet" "Léonore Porchet" "Niklaus-Samuel Gugger"
## [52] "Adèle Thorens Goumaz" "Niklaus-Samuel Gugger" "Léonore Porchet"
## [55] "Léonore Porchet" "Léonore Porchet" "Léonore Porchet"
## [58] "Léonore Porchet" "Adèle Thorens Goumaz" "Léonore Porchet"
## [61] "Léonore Porchet" "Léonore Porchet" "Niklaus-Samuel Gugger"
## [64] "Niklaus-Samuel Gugger" "Niklaus-Samuel Gugger" "Niklaus-Samuel Gugger"
## [67] "Niklaus-Samuel Gugger" "Irène Kälin" "Léonore Porchet"
## [70] "Irène Kälin" "Niklaus-Samuel Gugger" "Niklaus-Samuel Gugger"
## [73] "Niklaus-Samuel Gugger" "Niklaus-Samuel Gugger" "Niklaus-Samuel Gugger"
## [76] "Irène Kälin" "Adèle Thorens Goumaz" "Niklaus-Samuel Gugger"
## [79] "Niklaus-Samuel Gugger" "Adèle Thorens Goumaz" "Irène Kälin"
## [82] "Irène Kälin" "Irène Kälin" "Niklaus-Samuel Gugger"
## [85] "Irène Kälin" "Adèle Thorens Goumaz" "Adèle Thorens Goumaz"
## [88] "Adèle Thorens Goumaz" "Irène Kälin" "Irène Kälin"
## [91] "Niklaus-Samuel Gugger" "Niklaus-Samuel Gugger" "Irène Kälin"
## [94] "Irène Kälin" "Adèle Thorens Goumaz" "Irène Kälin"
## [97] "Niklaus-Samuel Gugger" "Niklaus-Samuel Gugger" "Irène Kälin"
## [100] "Irène Kälin" "Adèle Thorens Goumaz" "Adèle Thorens Goumaz"
## [103] "Adèle Thorens Goumaz" "Irène Kälin" "Irène Kälin"
## [106] "Adèle Thorens Goumaz" "Jacques-André Maire" "Irène Kälin"
## [109] "Irène Kälin" "Irène Kälin" "Irène Kälin"
## [112] "Irène Kälin" "Irène Kälin" "Niklaus-Samuel Gugger"
## [115] "Irène Kälin" "Niklaus-Samuel Gugger" "Adèle Thorens Goumaz"
## [118] "Adèle Thorens Goumaz" "Adèle Thorens Goumaz" "Adèle Thorens Goumaz"
## [121] "Irène Kälin" "Irène Kälin" "Irène Kälin"
## [124] "Irène Kälin" "Irène Kälin" "Irène Kälin"
## [127] "Adèle Thorens Goumaz" "Irène Kälin" "Jacques-André Maire"
## [130] "Irène Kälin" "Irène Kälin" "Adèle Thorens Goumaz"
## [133] "Irène Kälin" "Niklaus-Samuel Gugger" "Niklaus-Samuel Gugger"
## [136] "Adèle Thorens Goumaz" "Irène Kälin" "Adèle Thorens Goumaz"
Names that have no gender: - Adèle Thorens Goumaz (f) - Niklaus-Samuel Gugger (m) - Léonore Porchet (f) - Irène Kälin (f) - Jacques-André Maire (m) - Filippo Lombardi (m)
Attribute gender to names
$sex<- ifelse(parlament_3$name == "Adèle Thorens Goumaz", "female",
parlament_3ifelse(parlament_3$name == "Niklaus-Samuel Gugger", "male",
ifelse(parlament_3$name == "Léonore Porchet", "female",
ifelse(parlament_3$name == "Irène Kälin", "female",
ifelse(parlament_3$name == "Jacques-André Maire", "male",
ifelse(parlament_3$name == "
Filippo Lombardi", "male", parlament_3$sex))))))
Categories
$Gesundheit<- ifelse(grepl("Gesundheit", parlament_3$category), "yes", "no")
parlament_3$Wirtschaft<- ifelse(grepl("Wirtschaft", parlament_3$category), "yes", "no")
parlament_3$Umwelt<- ifelse(grepl("Umwelt", parlament_3$category), "yes", "no")
parlament_3$Finanzwesen<- ifelse(grepl("Finanzwesen", parlament_3$category), "yes", "no")
parlament_3$Soziale_Fragen<- ifelse(grepl("Soziale Fragen", parlament_3$category), "yes", "no")
parlament_3$Medien_Kommunik<- ifelse(grepl("Medien und Kommunikation", parlament_3$category), "yes", "no")
parlament_3$Beschäft_Arbeit<- ifelse(grepl("Beschäftigung und Arbeit", parlament_3$category), "yes", "no")
parlament_3$Staatspolitik<- ifelse(grepl("Staatspolitik", parlament_3$category), "yes", "no")
parlament_3$Sicherheitspolitik<- ifelse(grepl("Sicherheitspolitik", parlament_3$category), "yes", "no")
parlament_3$Landwirtschaft<- ifelse(grepl("Landwirtschaft", parlament_3$category), "yes", "no")
parlament_3$Menschenrechte<- ifelse(grepl("Menschenrechte", parlament_3$category), "yes", "no")
parlament_3$Strafrecht<- ifelse(grepl("Strafrecht", parlament_3$category), "yes", "no")
parlament_3$Kultur<- ifelse(grepl("Kultur", parlament_3$category), "yes", "no")
parlament_3$Parlament<- ifelse(grepl("Parlament", parlament_3$category), "yes", "no")
parlament_3$Wissen_Forsch<- ifelse(grepl("Wissenschaft und Forschung", parlament_3$category), "yes", "no")
parlament_3$Sozialer_Schutz<- ifelse(grepl("Sozialer Schutz", parlament_3$category), "yes", "no")
parlament_3$Raum_Wohnung<- ifelse(grepl("Raumplanung und Wohnungswesen", parlament_3$category), "yes", "no")
parlament_3$Inter_Politik<- ifelse(grepl("Internationale Politik", parlament_3$category), "yes", "no")
parlament_3$Verkehr<- ifelse(grepl("Verkehr", parlament_3$category), "yes", "no")
parlament_3$Steuer<- ifelse(grepl("Steuer", parlament_3$category), "yes", "no")
parlament_3$Zivilrecht<- ifelse(grepl("Zivilrecht", parlament_3$category), "yes", "no")
parlament_3$Energie<- ifelse(grepl("Energie", parlament_3$category), "yes", "no")
parlament_3$Migration<- ifelse(grepl("Migration", parlament_3$category), "yes", "no")
parlament_3$Europapolitik<- ifelse(grepl("Europapolitik", parlament_3$category), "yes", "no")
parlament_3$Bildung<- ifelse(grepl("Bildung", parlament_3$category), "yes", "no")
parlament_3$Recht_Allg<- ifelse(grepl("Recht Allgemein", parlament_3$category), "yes", "no") parlament_3
Separate by house (Rat)
<- filter(parlament_3, rat == "Ständerat")
SR <- filter (parlament_3, rat == "Nationalrat") NR
Separate before and after elections 2019 (start of new legislature: 02.12.2019)
<- filter(NR, date <= "2019-12-01")
NR_before <- filter(NR, date >= "2019-12-02") NR_after
Calculate percentage of handed in items by gender
<- c(100/nrow(NR_before)*
NR_barplot_item nrow(NR_before[NR_before$sex == "female",]),
100/nrow(NR_before)*
nrow(NR_before[NR_before$sex == "male",]),
100/nrow(NR_after)*
nrow(NR_after[NR_after$sex == "female",]),
100/nrow(NR_after)*
nrow(NR_after[NR_after$sex == "male",]))
<- c("weiblich", "männlich")
gender
<- c("before", "before", "after", "after")
time
<- data.frame(gender, time, NR_barplot_item)
NR_barplot_df $time_2 = factor(NR_barplot_df$time, levels = c("before", "after"), ordered = TRUE)
NR_barplot_df
# NR_barplot_df2 <- tidyr::gather(NR_barplot_df, time, item, amount, -gender)
Plot
library(ggplot2)
<-ggplot(data = NR_barplot_df, aes(x=gender, y=NR_barplot_item, fill = time_2)) +
barplot_item_NR geom_bar(stat="identity", position = "dodge") +
theme_classic() +
theme(plot.title=element_text(size=25), axis.text=element_text(size=15),
axis.title=element_text(size=15), legend.text=element_text(size=15),
legend.title=element_text(size=15)) +
labs(title="Eingereichte Geschäfte vor und nach 2019",
y ="Eingereichte Geschäfte (%)", x = "Geschlecht", caption = "Datenquelle: parlament.ch") +
scale_fill_manual(values = c("cadetblue3", "#93003a"), name = "Zeitpunkt", labels = c("vor der
Wahl 2019",
"nach der
Wahl 2019"))
barplot_item_NR
ggsave(barplot_item_NR, filename = "Plots/barplot_item_NR.png", height = 0.6*16, width = 0.9*9)
% Frauen im NR vor 2019: 32% % Frauen im NR nach 2019: 42%
<- c(32, 68, 42, 58)
NR_barplot_elec
<- data.frame(gender, time, NR_barplot_elec)
NR_elec_df $time_2 = factor(NR_elec_df$time, levels = c("before", "after"), ordered = TRUE) NR_elec_df
Plot
<-ggplot(data = NR_elec_df, aes(x=gender, y=NR_barplot_elec, fill = time_2)) +
barplot_elec_NR geom_bar(stat="identity", position = "dodge") +
theme_classic() +
theme(plot.title=element_text(size=25), axis.text=element_text(size=15),
axis.title=element_text(size=15), legend.text=element_text(size=15),
legend.title=element_text(size=15)) +
labs(title="Gewählte Nationalrät*innen nach Geschlecht",
y ="Prozent", x = "Geschlecht", caption = "Datenquelle: parlament.ch") +
scale_fill_manual(values = c("cadetblue3", "#93003a"), name = "Wahl", labels = c("Wahl 2015", "Wahl 2019"))
barplot_elec_NR
ggsave(barplot_elec_NR, filename = "Plots/barplot_elec_NR.png", height = 0.6*16, width = 0.9*9)
<- filter(NR_before, sex == "female")
NR_be_f <- filter(NR_after, sex == "female")
NR_af_f
<- filter(NR_before, sex == "male")
NR_be_m <- filter(NR_after, sex == "male")
NR_af_m
<-data.frame(head(sort(table(NR_be_f$name), decreasing = TRUE)))
NR_be_f_df <-data.frame(head(sort(table(NR_af_f$name), decreasing = TRUE)))
NR_af_f_df <-data.frame(head(sort(table(NR_be_m$name), decreasing = TRUE)))
NR_be_m_df <-data.frame(head(sort(table(NR_af_m$name), decreasing = TRUE)))
NR_af_m_df
$rank <- seq.int(nrow(NR_be_f_df))
NR_be_f_df<- rename(NR_be_f_df, women_before = Var1, f_be_freq = Freq)
NR_be_f_df $rank <- seq.int(nrow(NR_af_f_df))
NR_af_f_df<- rename(NR_af_f_df, women_after = Var1, f_af_freq = Freq)
NR_af_f_df $rank <- seq.int(nrow(NR_be_m_df))
NR_be_m_df<- rename(NR_be_m_df, men_before = Var1, m_be_freq = Freq)
NR_be_m_df $rank <- seq.int(nrow(NR_af_m_df))
NR_af_m_df<- rename(NR_af_m_df, men_after = Var1, m_af_freq = Freq)
NR_af_m_df
<- merge(NR_be_f_df, NR_af_f_df, by= "rank")
NR_ranking_1 <- merge(NR_ranking_1, NR_be_m_df, by= "rank")
NR_ranking_2 <- merge(NR_ranking_2, NR_af_m_df, by = "rank") NR_ranking
Make nice table
library(reactable)
## Warning: Paket 'reactable' wurde unter R Version 4.1.2 erstellt
<- reactable(NR_ranking,
NR_ranking_table columns = list(
rank = colDef(name = "Rang", align = "center"),
women_before = colDef(name = "Frauen (vor der Wahl 2019)"),
f_be_freq = colDef(name = "Anzahl eingereichte Geschäfte", align = "center"),
women_after = colDef(name = "Frauen (nach der Wahl 2019)"),
f_af_freq = colDef(name = "Anzahl eingereichte Geschäfte", align = "center"),
men_before = colDef(name = "Männer (vor der Wahl 2019)"),
m_be_freq = colDef(name = "Anzahl eingereichte Geschäfte", align = "center"),
men_after = colDef(name = "Männer (nach der Wahl 2019)"),
m_af_freq = colDef(name = "Anzahl eingereichte Geschäfte", align = "center")))
NR_ranking_table
Calculate percentage of women for each category before and after 2019
<- filter(NR_before, Soziale_Fragen == "yes")
Soziale_Fragen_before <- filter(NR_after, Soziale_Fragen == "yes")
Soziale_Fragen_after <- filter(NR_before, Sozialer_Schutz == "yes")
Sozialer_Schutz_before <- filter(NR_after, Sozialer_Schutz == "yes")
Sozialer_Schutz_after <- filter(NR_before, Migration == "yes")
Migration_before <- filter(NR_after, Migration == "yes")
Migration_after <- filter(NR_before, Beschäft_Arbeit == "yes")
Beschäft_Arbeit_before <- filter(NR_after, Beschäft_Arbeit == "yes")
Beschäft_Arbeit_after <- filter(NR_before, Gesundheit == "yes")
Gesundheit_before <- filter(NR_after, Gesundheit == "yes")
Gesundheit_after <- filter(NR_before, Menschenrechte == "yes")
Menschenrechte_before <- filter(NR_after, Menschenrechte == "yes")
Menschenrechte_after <- filter(NR_before, Bildung == "yes")
Bildung_before <- filter(NR_after, Bildung == "yes")
Bildung_after <- filter(NR_before, Kultur == "yes")
Kultur_before <- filter(NR_after, Kultur == "yes")
Kultur_after <- filter(NR_before, Umwelt == "yes")
Umwelt_before <- filter(NR_after, Umwelt == "yes")
Umwelt_after <- filter(NR_before, Raum_Wohnung == "yes")
Raum_Wohnung_before <- filter(NR_after, Raum_Wohnung == "yes")
Raum_Wohnung_after <- filter(NR_before, Energie == "yes")
Energie_before <- filter(NR_after, Energie == "yes")
Energie_after <- filter(NR_before, Medien_Kommunik == "yes")
Medien_Kommunik_before <- filter(NR_after, Medien_Kommunik == "yes")
Medien_Kommunik_after <- filter(NR_before, Verkehr == "yes")
Verkehr_before <- filter(NR_after, Verkehr == "yes")
Verkehr_after <- filter(NR_before, Wissen_Forsch == "yes")
Wissen_Forsch_before <- filter(NR_after, Wissen_Forsch == "yes")
Wissen_Forsch_after <- filter(NR_before, Europapolitik == "yes")
Europapolitik_before <- filter(NR_after, Europapolitik == "yes")
Europapolitik_after <- filter(NR_before, Parlament == "yes")
Parlament_before <- filter(NR_after, Parlament == "yes")
Parlament_after <- filter(NR_before, Inter_Politik == "yes")
Inter_Politik_before <- filter(NR_after, Inter_Politik == "yes")
Inter_Politik_after <- filter(NR_before, Staatspolitik == "yes")
Staatspolitik_before <- filter(NR_after, Staatspolitik == "yes")
Staatspolitik_after <- filter(NR_before, Zivilrecht == "yes")
Zivilrecht_before <- filter(NR_after, Zivilrecht == "yes")
Zivilrecht_after <- filter(NR_before, Strafrecht == "yes")
Strafrecht_before <- filter(NR_after, Strafrecht == "yes")
Strafrecht_after <- filter(NR_before, Recht_Allg == "yes")
Recht_Allg_before <- filter(NR_after, Recht_Allg == "yes")
Recht_Allg_after <- filter(NR_before, Landwirtschaft == "yes")
Landwirtschaft_before <- filter(NR_after, Landwirtschaft == "yes")
Landwirtschaft_after <- filter(NR_before, Sicherheitspolitik == "yes")
Sicherheitspolitik_before <- filter(NR_after, Sicherheitspolitik == "yes")
Sicherheitspolitik_after <- filter(NR_before, Steuer == "yes")
Steuer_before <- filter(NR_after, Steuer == "yes")
Steuer_after <- filter(NR_before, Wirtschaft == "yes")
Wirtschaft_before <- filter(NR_after, Wirtschaft == "yes")
Wirtschaft_after <- filter(NR_before, Finanzwesen == "yes")
Finanzwesen_before <- filter(NR_after, Finanzwesen == "yes")
Finanzwesen_after
<- c(100/nrow(Soziale_Fragen_before)*
Vorher_NR nrow(Soziale_Fragen_before[Soziale_Fragen_before$sex == "female",]),
100/nrow(Sozialer_Schutz_before)*
nrow(Sozialer_Schutz_before[Sozialer_Schutz_before$sex == "female",]),
100/nrow(Migration_before)*
nrow(Migration_before[Migration_before$sex == "female",]),
100/nrow(Beschäft_Arbeit_before)*
nrow(Beschäft_Arbeit_before[Beschäft_Arbeit_before$sex == "female",]),
100/nrow(Gesundheit_before)*
nrow(Gesundheit_before[Gesundheit_before$sex == "female",]),
100/nrow(Menschenrechte_before)*
nrow(Menschenrechte_before[Menschenrechte_before$sex == "female",]),
100/nrow(Bildung_before)*
nrow(Bildung_before[Bildung_before$sex == "female",]),
100/nrow(Kultur_before)*
nrow(Kultur_before[Kultur_before$sex == "female",]),
100/nrow(Umwelt_before)*
nrow(Umwelt_before[Umwelt_before$sex == "female",]),
100/nrow(Raum_Wohnung_before)*
nrow(Raum_Wohnung_before[Raum_Wohnung_before$sex == "female",]),
100/nrow(Energie_before)*
nrow(Energie_before[Energie_before$sex == "female",]),
100/nrow(Medien_Kommunik_before)*
nrow(Medien_Kommunik_before[Medien_Kommunik_before$sex == "female",]),
100/nrow(Verkehr_before)*
nrow(Verkehr_before[Verkehr_before$sex == "female",]),
100/nrow(Wissen_Forsch_before)*
nrow(Wissen_Forsch_before[Wissen_Forsch_before$sex == "female",]),
100/nrow(Europapolitik_before)*
nrow(Europapolitik_before[Europapolitik_before$sex == "female",]),
100/nrow(Parlament_before)*
nrow(Parlament_before[Parlament_before$sex == "female",]),
100/nrow(Inter_Politik_before)*
nrow(Inter_Politik_before[Inter_Politik_before$sex == "female",]),
100/nrow(Staatspolitik_before)*
nrow(Staatspolitik_before[Staatspolitik_before$sex == "female",]),
100/nrow(Zivilrecht_before)*
nrow(Zivilrecht_before[Zivilrecht_before$sex == "female",]),
100/nrow(Strafrecht_before)*
nrow(Strafrecht_before[Strafrecht_before$sex == "female",]),
100/nrow(Recht_Allg_before)*
nrow(Recht_Allg_before[Recht_Allg_before$sex == "female",]),
100/nrow(Landwirtschaft_before)*
nrow(Landwirtschaft_before[Landwirtschaft_before$sex == "female",]),
100/nrow(Sicherheitspolitik_before)*
nrow(Sicherheitspolitik_before[Sicherheitspolitik_before$sex == "female",]),
100/nrow(Steuer_before)*
nrow(Steuer_before[Steuer_before$sex == "female",]),
100/nrow(Wirtschaft_before)*
nrow(Wirtschaft_before[Wirtschaft_before$sex == "female",]),
100/nrow(Finanzwesen_before)*
nrow(Finanzwesen_before[Finanzwesen_before$sex == "female",]))
<- c(100/nrow(Soziale_Fragen_after)*
Nachher_NR nrow(Soziale_Fragen_after[Soziale_Fragen_after$sex == "female",]),
100/nrow(Sozialer_Schutz_after)*
nrow(Sozialer_Schutz_after[Sozialer_Schutz_after$sex == "female",]),
100/nrow(Migration_after)*
nrow(Migration_after[Migration_after$sex == "female",]),
100/nrow(Beschäft_Arbeit_after)*
nrow(Beschäft_Arbeit_after[Beschäft_Arbeit_after$sex == "female",]),
100/nrow(Gesundheit_after)*
nrow(Gesundheit_after[Gesundheit_after$sex == "female",]),
100/nrow(Menschenrechte_after)*
nrow(Menschenrechte_after[Menschenrechte_after$sex == "female",]),
100/nrow(Bildung_after)*
nrow(Bildung_after[Bildung_after$sex == "female",]),
100/nrow(Kultur_after)*
nrow(Kultur_after[Kultur_after$sex == "female",]),
100/nrow(Umwelt_after)*
nrow(Umwelt_after[Umwelt_after$sex == "female",]),
100/nrow(Raum_Wohnung_after)*
nrow(Raum_Wohnung_after[Raum_Wohnung_after$sex == "female",]),
100/nrow(Energie_after)*
nrow(Energie_after[Energie_after$sex == "female",]),
100/nrow(Medien_Kommunik_after)*
nrow(Medien_Kommunik_after[Medien_Kommunik_after$sex == "female",]),
100/nrow(Verkehr_after)*
nrow(Verkehr_after[Verkehr_after$sex == "female",]),
100/nrow(Wissen_Forsch_after)*
nrow(Wissen_Forsch_after[Wissen_Forsch_after$sex == "female",]),
100/nrow(Europapolitik_after)*
nrow(Europapolitik_after[Europapolitik_after$sex == "female",]),
100/nrow(Parlament_after)*
nrow(Parlament_after[Parlament_after$sex == "female",]),
100/nrow(Inter_Politik_after)*
nrow(Inter_Politik_after[Inter_Politik_after$sex == "female",]),
100/nrow(Staatspolitik_after)*
nrow(Staatspolitik_after[Staatspolitik_after$sex == "female",]),
100/nrow(Zivilrecht_after)*
nrow(Zivilrecht_after[Zivilrecht_after$sex == "female",]),
100/nrow(Strafrecht_after)*
nrow(Strafrecht_after[Strafrecht_after$sex == "female",]),
100/nrow(Recht_Allg_after)*
nrow(Recht_Allg_after[Recht_Allg_after$sex == "female",]),
100/nrow(Landwirtschaft_after)*
nrow(Landwirtschaft_after[Landwirtschaft_after$sex == "female",]),
100/nrow(Sicherheitspolitik_after)*
nrow(Sicherheitspolitik_after[Sicherheitspolitik_after$sex == "female",]),
100/nrow(Steuer_after)*
nrow(Steuer_after[Steuer_after$sex == "female",]),
100/nrow(Wirtschaft_after)*
nrow(Wirtschaft_after[Wirtschaft_after$sex == "female",]),
100/nrow(Finanzwesen_after)*
nrow(Finanzwesen_after[Finanzwesen_after$sex == "female",]))
<- c("Soziale Frage", "Sozialer Schutz", "Migration", "Beschäftigung & Arbeit",
categories "Gesundheit", "Menschenrechte","Bildung", "Kultur", "Umwelt",
"Raumplanung & Wohnungswesen", "Energie", "Medien und Kommunikation",
"Verkehr", "Wissenschaft & Forschung", "Europapolitik", "Parlament",
"Internationale Politik", "Staatspolitik", "Zivilrecht", "Strafrecht",
"Recht Allgemein", "Landwirtschaft", "Sicherheitspolitik", "Steuer",
"Wirtschaft", "Finanzwesen")
<- data.frame(categories, Vorher_NR, Nachher_NR)
NR_dumbell_df
# NR_dumbell_df2 <- tidyr::gather(NR_dumbell_df, group, value, -categories)
Plot
library(ggalt)
## Registered S3 methods overwritten by 'ggalt':
## method from
## grid.draw.absoluteGrob ggplot2
## grobHeight.absoluteGrob ggplot2
## grobWidth.absoluteGrob ggplot2
## grobX.absoluteGrob ggplot2
## grobY.absoluteGrob ggplot2
library(forcats)
<- ggplot(NR_dumbell_df) +
g_dumbbell_NR geom_dumbbell(aes(y = fct_reorder(categories, Vorher_NR), x = Nachher_NR, xend = Vorher_NR), size = 1.2, size_x = 2, size_xend = 2, color = "gray71", colour_x = "#93003a", colour_xend = "cadetblue3") +
labs(title = "Prozentanteil von Frauen eingereichte Geschäfte
vor und nach 2019, nach Themengebiet", caption = "Datenquelle: parlament.ch",
x = "Von Frauen eingereichte Geschäfte (%)", y = "") +
theme_light() +
theme(strip.background = element_blank(), strip.text = element_text(color = "black", face = "italic")) +
geom_text(data=filter(NR_dumbell_df, categories == "Zivilrecht"),
aes(x=Vorher_NR, y=categories, label="Vor der Wahl 2019"),
color= "cadetblue3", size=3, vjust=-1.5) +
geom_text(data=filter(NR_dumbell_df, categories == "Zivilrecht"),
aes(x=Nachher_NR, y=categories, label="Nach der Wahl 2019"),
color= "#93003a", size=3, vjust=-1.5)
g_dumbbell_NR
ggsave(g_dumbbell_NR, filename = "Plots/dumbbell_NR_plot.png", height = 0.6*16, width = 0.9*9)
Parties
table(NR_before$party)
##
## Bürgerlich-Demokratische Partei Schweiz
## 34
## Christlich-soziale Partei Obwalden
## 8
## Christlichdemokratische Volkspartei der Schweiz
## 296
## Christlichdemokratische Volkspartei Oberwallis
## 6
## Christlichsoziale Volkspartei Oberwallis
## 14
## Evangelische Volkspartei der Schweiz
## 27
## FDP.Die Liberalen
## 259
## Grüne (Basels starke Alternative)
## 30
## Grüne Partei der Schweiz
## 189
## Grünliberale Partei
## 124
## Lega dei Ticinesi
## 55
## Liberal-Demokratische Partei
## 19
## Mouvement Citoyens Genevois
## 10
## Partei der Arbeit der Schweiz
## 21
## Schweizerische Volkspartei
## 481
## Sozialdemokratische Partei der Schweiz
## 557
table(NR_after$party)
##
## Alternative-die Grünen Kanton Zug
## 12
## Bürgerlich-Demokratische Partei Schweiz
## 9
## Christlichdemokratische Volkspartei der Schweiz
## 268
## Christlichdemokratische Volkspartei Oberwallis
## 8
## Eidgenössisch-Demokratische Union
## 8
## Ensemble à Gauche
## 30
## Evangelische Volkspartei der Schweiz
## 42
## FDP.Die Liberalen
## 261
## Grüne (Basels starke Alternative)
## 13
## Grüne Partei der Schweiz
## 515
## Grünliberale Partei
## 149
## Lega dei Ticinesi
## 51
## Liberal-Demokratische Partei
## 15
## Partei der Arbeit der Schweiz
## 27
## Schweizerische Volkspartei
## 477
## Sozialdemokratische Partei der Schweiz
## 637
<- filter(NR_before, party == "Christlichdemokratische Volkspartei der Schweiz" |
CVP_before == "Christlich-soziale Partei Obwalden" |
party == "Christlichdemokratische Volkspartei Oberwallis" |
party == "Christlichsoziale Volkspartei Oberwallis")
party <- filter(NR_after, party == "Christlichdemokratische Volkspartei der Schweiz" |
CVP_after == "Christlichdemokratische Volkspartei Oberwallis")
party <- filter(NR_before, party == "FDP.Die Liberalen" |
FDP_before == "Liberal-Demokratische Partei")
party <- filter(NR_after, party == "FDP.Die Liberalen" |
FDP_after == "Liberal-Demokratische Partei")
party <- filter(NR_before, party == "Grüne (Basels starke Alternative)" |
GPS_before == "Grüne Partei der Schweiz")
party <- filter(NR_after, party == "Grüne (Basels starke Alternative)" |
GPS_after == "Grüne Partei der Schweiz" |
party == "Alternative-die Grünen Kanton Zug")
party <- filter(NR_before, party == "Grünliberale Partei")
GLP_before <- filter(NR_after, party == "Grünliberale Partei")
GLP_after <- filter(NR_before, party == "Schweizerische Volkspartei")
SVP_before <- filter(NR_after, party == "Schweizerische Volkspartei")
SVP_after <- filter(NR_before, party == "Sozialdemokratische Partei der Schweiz")
SP_before <- filter(NR_after, party == "Sozialdemokratische Partei der Schweiz")
SP_after <- filter(NR_before, party == "Bürgerlich-Demokratische Partei Schweiz" |
other_before == "Evangelische Volkspartei der Schweiz" |
party == "Lega dei Ticinesi"|
party == "Mouvement Citoyens Genevois" |
party == "Partei der Arbeit der Schweiz")
party <- filter(NR_after, party == "Bürgerlich-Demokratische Partei Schweiz" |
other_after == "Eidgenössisch-Demokratische Union" |
party == "Ensemble à Gauche" |
party == "Evangelische Volkspartei der Schweiz" |
party == "Lega dei Ticinesi"|
party == "Mouvement Citoyens Genevois" |
party == "Partei der Arbeit der Schweiz")
party
<- c(100/nrow(CVP_before)*
parties_before nrow(CVP_before[CVP_before$sex == "female",]),
100/nrow(FDP_before)*
nrow(FDP_before[FDP_before$sex == "female",]),
100/nrow(GPS_before)*
nrow(GPS_before[GPS_before$sex == "female",]),
100/nrow(GLP_before)*
nrow(GLP_before[GLP_before$sex == "female",]),
100/nrow(SVP_before)*
nrow(SVP_before[SVP_before$sex == "female",]),
100/nrow(SP_before)*
nrow(SP_before[SP_before$sex == "female",]),
100/nrow(other_before)*
nrow(other_before[other_before$sex == "female",]))
<- c(100/nrow(CVP_after)*
parties_after nrow(CVP_after[CVP_after$sex == "female",]),
100/nrow(FDP_after)*
nrow(FDP_after[FDP_after$sex == "female",]),
100/nrow(GPS_after)*
nrow(GPS_after[GPS_after$sex == "female",]),
100/nrow(GLP_after)*
nrow(GLP_after[GLP_after$sex == "female",]),
100/nrow(SVP_after)*
nrow(SVP_after[SVP_after$sex == "female",]),
100/nrow(SP_after)*
nrow(SP_after[SP_after$sex == "female",]),
100/nrow(other_after)*
nrow(other_after[other_after$sex == "female",]))
<- c("CVP", "FDP", "Grüne", "GLP",
categories_parties "SVP", "SP","Übrige")
<- data.frame(categories_parties, parties_before, parties_after)
NR_parties_df <- tidyr::gather(NR_parties_df, time, value, -categories_parties) NR_parties_df2
Plot
<- NR_parties_df2 %>%
barplot_parties_NR ggplot(aes(x= value, y= reorder(categories_parties,value), color=time)) +
geom_point(size = 3, ) +
labs(title = "Prozentanteil von Frauen eingereichte Geschäfte
vor und nach 2019, nach Partei", caption = "Datenquelle: parlament.ch",
x = "Von Frauen eingereichte Geschäfte (%)", y = "") +
theme_light() +
scale_color_manual(values = c("#93003a", "cadetblue3"), name = "Zeitpunkt", labels = c("nach der Wahl 2019", "vor der Wahl 2019"))
barplot_parties_NR
ggsave(barplot_parties_NR, filename = "Plots/barplot_parties_NR.png", height = 0.2*16, width = 0.7*9)