108 lines
3.5 KiB
Plaintext
108 lines
3.5 KiB
Plaintext
---
|
|
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)
|
|
```
|