An R package to analyze the parliamentary records of the 19th legislative period of the Bundestag, the German parliament.
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
flavis 77f79f0d86 change spelling of greens fraction, fix parsing issue in comments table před 4 roky
R change spelling of greens fraction, fix parsing issue in comments table před 4 roky
inst rename some columns to english před 4 roky
man add rotatelab to bar_plot_fractions před 4 roky
vignettes change spelling of greens fraction, fix parsing issue in comments table před 4 roky
.Rbuildignore fix vignette před 4 roky
.gitignore refactor again because of check complaining před 4 roky
DESCRIPTION refactor bar_plot_fractions and add error handling před 4 roky
NAMESPACE refactor rede -> speech, redner -> speaker před 4 roky
README.md update README.md před 4 roky

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?”
  • ...