An R package to analyze the parliamentary records of the 19th legislative period of the Bundestag, the German parliament.
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
flavis 489254dadf Merge branch 'master' into genderequality-alternative 4 lat temu
R replace non ascii characters by unicode points 4 lat temu
inst Merge branch 'master' into genderequality-alternative 4 lat temu
man update man 4 lat temu
vignettes add missing function to genderequality 4 lat temu
.Rbuildignore add gpl3 license 4 lat temu
.gitignore refactor again because of check complaining 4 lat temu
DESCRIPTION add gpl3 license 4 lat temu
LICENSE.md add gpl3 license 4 lat temu
NAMESPACE refactor rede -> speech, redner -> speaker 4 lat temu
README.md update README.md 4 lat temu

README.md

How to develop

# everything works with devtools (loads some other packages too)
library(devtools)

# reload all package functions
load_all()

#write to CSV files to speed up loading
tables <- read_all()
tables <- repair(tables)
write_to_csv(tables)

We NEVER use source(...), etc.! Also NEVER use library(...). But to add new packages (as dependency), use:

use_package("my-good-old-package")

To make package imports available, you have to add them to R/hateimparlament-package.R as @import <package>.

To reload / create documentation (calls roxygen)

document()

Build vignettes

rmarkdown::render("vignettes/bla.Rmd")

Download

Before parsing, fetch.R must be run to download all protocols.

fetch_all("../inst/records/") # path to directory where records should be stored

Parsing

tables

parse.R parses all downloaded logs and creates 5 tibbles. repair.R then cleans up the errors in these tibbles.

read_all("../inst/records/") %>% repair()

Speaker

structure: id , first_name , last_name , fraction , title , role_short, role_long.

Obtained from the <speaker list> entry at the end of the transcripts.

Speeches

Structure: id , speaker

The speeches id is specified in the protocol and is unique.A speech is a <speech> entry in the session history. A speech always has a main speaker (the one standing at the front of the lectern).

Within a speech, there can be different speech entries:

  • Comments: Applause, interjections, etc.
  • Speeches: Typically mainly the main speaker, but also interjections. These are stored in the talks, comments and applause tables when parsing.

Talks

Structure: speech_id , speaker , content.

These are the actual talk entries that appear within speeches.

  • speech_id: the speech in which the contribution appears.
  • speaker: The speaker of the speech entry.
  • content: The content of the speech.

###comments

These are the interjections that appear during the speeches.

They have the following structure:

  • speech_id: The speech that was interrupted.
  • on_speaker: The speaker who was interrupted.
  • fraction
  • commenter: The person who interrupted the speech.
  • comment: The content of the comment.

###applause

The logical table shows which party applauded for which speaker with explicit speech and which did not.

structure: speech_id, on_speaker, CDU_CSU, SPD, FDP, DIE_LINKE, BUENDNIS_90_DIE_GRUENEN, AfD

Analysis

analysis.R provides some functions to analyze the “Plenarprotokolle” and to create plots.

In the vignettes you can find different analyses of the protocols, for example:

  • “Who talks the most?”
  • “Which party gives the most speeches?”
  • “Which party comments the most on which parties?”
  • “When are which topics discussed the most?”
  • ...