--- title: "Interaction between fractions" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Interaction between fractions} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ```{r setup} library(hateimparlament) library(dplyr) library(ggplot2) library(stringr) library(tidyr) ``` ## Preparation of data First, you need to download all records of the current legislative period. ```r fetch_all("../inst/records/") # path to directory where records should be stored ``` Second, those `.xml` files, need to be parsed into `R` `tibbles`. This is accomplished by: ```r read_all("../inst/records/") %>% repair() -> res ``` We also used `repair` to fix a bunch of formatting issues in the records. For development purposes, we load the tables from csv files. ```{r} res <- read_from_csv('../inst/csv/') ``` ## Analysis Now we can start analysing our parsed dataset: ### Which party gives the most applause to which parties? ```{r} res$applause %>% left_join(res$speaker, by=c("on_speaker" = "id")) %>% select(on_fraction = fraction, where(is.logical)) %>% group_by(on_fraction) %>% arrange(on_fraction) %>% summarize("AfD" = sum(`AfD`), "BÜNDNIS 90/DIE GRÜNEN" = sum(`BUENDNIS_90_DIE_GRUENEN`), "CDU/CSU" = sum(`CDU_CSU`), "DIE LINKE" = sum(`DIE_LINKE`), "FDP" = sum(`FDP`), "SPD" = sum(`SPD`)) -> tb ``` For plotting our results we reorganize them a bit and produce a bar plot: ```{r, fig.width=7, fig.height=6} pivot_longer(tb, where(is.numeric), "by_fraction", "count") %>% filter(!is.na(on_fraction)) %>% bar_plot_fractions(x_variable = on_fraction, y_variable = value, fill = by_fraction, title = "Number of rounds of applauses from fractions to fractions", xlab = "Applauded fraction", ylab = "Rounds of applauses", filllab = "Applauding fraction", flipped = FALSE, rotatelab = TRUE) ``` ### Which party comments the most on which parties? ```{r} res$comments %>% left_join(res$speaker, by=c("on_speaker" = "id")) %>% select(by_fraction = fraction.x, on_fraction = fraction.y) %>% group_by(on_fraction) %>% summarize(`AfD` = sum(str_detect(by_fraction, "AfD"), na.rm=T), `BÜNDNIS 90/DIE GRÜNEN` = sum(str_detect(by_fraction, "BÜNDNIS 90/DIE GRÜNEN"), na.rm=T), `CDU/CSU` = sum(str_detect(by_fraction, "CDU/CSU"), na.rm = T), `DIE LINKE` = sum(str_detect(by_fraction, "DIE LINKE"), na.rm=T), `FDP` = sum(str_detect(by_fraction, "FDP"), na.rm=T), `SPD` = sum(str_detect(by_fraction, "SPD"), na.rm=T)) -> tb ``` Analogously we plot the results: ```{r, fig.width=7, fig.height=6} pivot_longer(tb, where(is.numeric), "by_fraction", "count") %>% filter(!is.na(on_fraction)) %>% bar_plot_fractions(x_variable = on_fraction, y_variable = value, fill = by_fraction, title = "Number of comments from fractions to fractions", xlab = "Commented fraction", ylab = "Number of comments", filllab = "Commenting fraction", flipped = FALSE, rotatelab = TRUE) ```