In [1]:
sample(c("Florens", "Anne", "Markus"))
Out[1]:
  1. 'Anne'
  2. 'Markus'
  3. 'Florens'
In [2]:
getwd()
Out[2]:
'/home/user/data_dojo_9'

Load data

In [3]:
# Step 1: Load packages

library(data.table)
library(tidyverse)
Warning message in system("timedatectl", intern = TRUE):
“running command 'timedatectl' had status 1”
── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──

✔ ggplot2 3.3.5     ✔ purrr   0.3.4
✔ tibble  3.1.6     ✔ dplyr   1.0.7
✔ tidyr   1.1.4     ✔ stringr 1.4.0
✔ readr   2.1.1     ✔ forcats 0.5.1

── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::between()   masks data.table::between()
✖ dplyr::filter()    masks stats::filter()
✖ dplyr::first()     masks data.table::first()
✖ dplyr::lag()       masks stats::lag()
✖ dplyr::last()      masks data.table::last()
✖ purrr::transpose() masks data.table::transpose()

In [4]:
# Step 2: Load data

stadt_data <- fread("Open-Data-Bundestagswahl1343_wue_stadt.csv")
votes <- fread("okvote-fields.tsv")
In [5]:
head(stadt_data)
Out[5]:
A data.table: 6 × 71
datumwahlagsgebiet-nrgebiet-namemax-schnellmeldungenanz-schnellmeldungenA1A2A3⋯D23F23D24F24D25F25D26F26D27F27
<chr><chr><int><lgl><chr><int><int><int><int><int>⋯<int><int><int><int><int><int><int><int><int><int>
26.09.2021Wahl zum Deutschen Bundestag9663000NAALTSTADT 3232595991170⋯97410390 70891050
26.09.2021Wahl zum Deutschen Bundestag9663000NAZELLERAU 1212431340970⋯3317024015037 660
26.09.2021Wahl zum Deutschen Bundestag9663000NADÜRRBACHTAL 1010193625170⋯19 60 70 7010 460
26.09.2021Wahl zum Deutschen Bundestag9663000NAGROMBÜHL 1010290031880⋯29140120 9028 360
26.09.2021Wahl zum Deutschen Bundestag9663000NALINDLEINSMÜHLE 4 4191613860⋯ 5 20100 30 4 280
26.09.2021Wahl zum Deutschen Bundestag9663000NAFRAUENLAND 2626608483740⋯66340240120791020
In [6]:
head(votes)
tail(votes)
Out[6]:
A data.table: 6 × 3
columnstimmepartei_beschreibung
<chr><chr><chr>
datum Datum des Wahltermins
wahl Name der Wahl
ags AGS der Behörde
gebiet-nr Nummer des Wahlgebiets
gebiet-name Name des Wahlgebiets
max-schnellmeldungenAnzahl an insgesamt erwarteten Schnellmeldungen im Wahlgebiet
Out[6]:
A data.table: 6 × 3
columnstimmepartei_beschreibung
<chr><chr><chr>
F24ZweitstimmenTeam Todenhöfer – Die Gerechtigkeitspartei
D25Erststimmen UNABHÄNGIGE für bürgernahe Demokratie
F25ZweitstimmenUNABHÄNGIGE für bürgernahe Demokratie
D26Erststimmen Volt Deutschland
F26ZweitstimmenVolt Deutschland
D27Erststimmen Einzelbewerber Schürer
In [7]:
select(stadt_data, `gebiet-name`, D1:F27) %>%
    gather("Partei_Stimme", "Wert", 2:ncol(.)) %>% 
    left_join(votes, by = c("Partei_Stimme" = "column"))%>%
    filter(!is.na(stimme)) %>%
    select(-Partei_Stimme) %>%
    spread("stimme", "Wert")
Out[7]:
A data.frame: 351 × 4
gebiet-namepartei_beschreibungErststimmenZweitstimmen
<chr><chr><int><int>
ALTSTADT Alternative für Deutschland 0 477
ALTSTADT Basisdemokratische Partei Deutschland 242 123
ALTSTADT Bayernpartei 0 5
ALTSTADT BÜNDNIS 90/DIE GRÜNEN 44494267
ALTSTADT Bündnis C - Christen für Deutschland 0 8
ALTSTADT Christlich-Soziale Union in Bayern e.V. 28142333
ALTSTADT DER DRITTE WEG 0 2
ALTSTADT Deutsche Kommunistische Partei 0 7
ALTSTADT DIE LINKE 793 835
ALTSTADT Die Urbane. Eine HipHop Partei 0 12
ALTSTADT Einzelbewerber Schürer 105 NA
ALTSTADT Freie Demokratische Partei 15301538
ALTSTADT FREIE WÄHLER 380 233
ALTSTADT Liberal-Konservative Reformer 0 2
ALTSTADT Marxistisch-Leninistische Partei Deutschlands 0 3
ALTSTADT Nationaldemokratische Partei Deutschlands 0 2
ALTSTADT Ökologisch-Demokratische Partei 167 71
ALTSTADT Partei der Humanisten 97 41
ALTSTADT Partei für Arbeit, Rechtsstaat, Tierschutz, Elitenförderung und basisdemokratische Initiative 0 163
ALTSTADT Partei für Gesundheitsforschung 0 12
ALTSTADT PARTEI MENSCH UMWELT TIERSCHUTZ 0 115
ALTSTADT Piratenpartei Deutschland 0 45
ALTSTADT Sozialdemokratische Partei Deutschlands 18452030
ALTSTADT Team Todenhöfer – Die Gerechtigkeitspartei 0 39
ALTSTADT UNABHÄNGIGE für bürgernahe Demokratie 0 7
ALTSTADT V-Partei³ - Partei für Veränderung, Vegetarier und Veganer 0 28
ALTSTADT Volt Deutschland 0 89
DÜRRBACHTALAlternative für Deutschland 0 242
DÜRRBACHTALBasisdemokratische Partei Deutschland 84 43
DÜRRBACHTALBayernpartei 0 6
⋮⋮⋮⋮
VERSBACHUNABHÄNGIGE für bürgernahe Demokratie 0 8
VERSBACHV-Partei³ - Partei für Veränderung, Vegetarier und Veganer 0 3
VERSBACHVolt Deutschland 0 8
ZELLERAUAlternative für Deutschland 0 393
ZELLERAUBasisdemokratische Partei Deutschland 172 79
ZELLERAUBayernpartei 0 9
ZELLERAUBÜNDNIS 90/DIE GRÜNEN 18441731
ZELLERAUBündnis C - Christen für Deutschland 0 2
ZELLERAUChristlich-Soziale Union in Bayern e.V. 13701173
ZELLERAUDER DRITTE WEG 0 3
ZELLERAUDeutsche Kommunistische Partei 0 3
ZELLERAUDIE LINKE 513 541
ZELLERAUDie Urbane. Eine HipHop Partei 0 8
ZELLERAUEinzelbewerber Schürer 66 NA
ZELLERAUFreie Demokratische Partei 589 529
ZELLERAUFREIE WÄHLER 246 159
ZELLERAULiberal-Konservative Reformer 0 0
ZELLERAUMarxistisch-Leninistische Partei Deutschlands 0 3
ZELLERAUNationaldemokratische Partei Deutschlands 0 1
ZELLERAUÖkologisch-Demokratische Partei 95 37
ZELLERAUPartei der Humanisten 33 17
ZELLERAUPartei für Arbeit, Rechtsstaat, Tierschutz, Elitenförderung und basisdemokratische Initiative 0 76
ZELLERAUPartei für Gesundheitsforschung 0 7
ZELLERAUPARTEI MENSCH UMWELT TIERSCHUTZ 0 69
ZELLERAUPiratenpartei Deutschland 0 21
ZELLERAUSozialdemokratische Partei Deutschlands 12211240
ZELLERAUTeam Todenhöfer – Die Gerechtigkeitspartei 0 24
ZELLERAUUNABHÄNGIGE für bürgernahe Demokratie 0 15
ZELLERAUV-Partei³ - Partei für Veränderung, Vegetarier und Veganer 0 8
ZELLERAUVolt Deutschland 0 37
In [8]:
result <- select(stadt_data, `gebiet-name`, D1:F27) %>%
    gather("Partei_Stimme", "Wert", 2:ncol(.)) %>% 
    left_join(votes, by = c("Partei_Stimme" = "column")) %>%
    filter(!is.na(stimme)) %>%
    select(-Partei_Stimme) %>%
    spread("stimme", "Wert") %>%
    identity %>% 
    replace(is.na(.), 0)
In [9]:
result %>% group_by(`gebiet-name`) %>%
    mutate(Erststimmen = Erststimmen/sum(Erststimmen), Zweitstimmen = Zweitstimmen/sum(Zweitstimmen))
Out[9]:
A grouped_df: 351 × 4
gebiet-namepartei_beschreibungErststimmenZweitstimmen
<chr><chr><dbl><dbl>
ALTSTADT Alternative für Deutschland 0.0000000000.0381997277
ALTSTADT Basisdemokratische Partei Deutschland 0.0194815650.0098502443
ALTSTADT Bayernpartei 0.0000000000.0004004164
ALTSTADT BÜNDNIS 90/DIE GRÜNEN 0.3581548860.3417153840
ALTSTADT Bündnis C - Christen für Deutschland 0.0000000000.0006406663
ALTSTADT Christlich-Soziale Union in Bayern e.V. 0.2265335690.1868343077
ALTSTADT DER DRITTE WEG 0.0000000000.0001601666
ALTSTADT Deutsche Kommunistische Partei 0.0000000000.0005605830
ALTSTADT DIE LINKE 0.0638383510.0668695443
ALTSTADT Die Urbane. Eine HipHop Partei 0.0000000000.0009609994
ALTSTADT Einzelbewerber Schürer 0.0084527450.0000000000
ALTSTADT Freie Demokratische Partei 0.1231685720.1231680948
ALTSTADT FREIE WÄHLER 0.0305908870.0186594058
ALTSTADT Liberal-Konservative Reformer 0.0000000000.0001601666
ALTSTADT Marxistisch-Leninistische Partei Deutschlands 0.0000000000.0002402499
ALTSTADT Nationaldemokratische Partei Deutschlands 0.0000000000.0001601666
ALTSTADT Ökologisch-Demokratische Partei 0.0134438900.0056859133
ALTSTADT Partei der Humanisten 0.0078087260.0032834148
ALTSTADT Partei für Arbeit, Rechtsstaat, Tierschutz, Elitenförderung und basisdemokratische Initiative0.0000000000.0130535757
ALTSTADT Partei für Gesundheitsforschung 0.0000000000.0009609994
ALTSTADT PARTEI MENSCH UMWELT TIERSCHUTZ 0.0000000000.0092095780
ALTSTADT Piratenpartei Deutschland 0.0000000000.0036037479
ALTSTADT Sozialdemokratische Partei Deutschlands 0.1485268070.1625690718
ALTSTADT Team Todenhöfer – Die Gerechtigkeitspartei 0.0000000000.0031232482
ALTSTADT UNABHÄNGIGE für bürgernahe Demokratie 0.0000000000.0005605830
ALTSTADT V-Partei³ - Partei für Veränderung, Vegetarier und Veganer 0.0000000000.0022423320
ALTSTADT Volt Deutschland 0.0000000000.0071274125
DÜRRBACHTALAlternative für Deutschland 0.0000000000.0658861966
DÜRRBACHTALBasisdemokratische Partei Deutschland 0.0230326300.0117070515
DÜRRBACHTALBayernpartei 0.0000000000.0016335421
⋮⋮⋮⋮
VERSBACHUNABHÄNGIGE für bürgernahe Demokratie 0.0000000000.0018386578
VERSBACHV-Partei³ - Partei für Veränderung, Vegetarier und Veganer 0.0000000000.0006894967
VERSBACHVolt Deutschland 0.0000000000.0018386578
ZELLERAUAlternative für Deutschland 0.0000000000.0635408246
ZELLERAUBasisdemokratische Partei Deutschland 0.0279720280.0127728375
ZELLERAUBayernpartei 0.0000000000.0014551334
ZELLERAUBÜNDNIS 90/DIE GRÜNEN 0.2998861600.2798706548
ZELLERAUBündnis C - Christen für Deutschland 0.0000000000.0003233630
ZELLERAUChristlich-Soziale Union in Bayern e.V. 0.2228004550.1896523848
ZELLERAUDER DRITTE WEG 0.0000000000.0004850445
ZELLERAUDeutsche Kommunistische Partei 0.0000000000.0004850445
ZELLERAUDIE LINKE 0.0834282000.0874696847
ZELLERAUDie Urbane. Eine HipHop Partei 0.0000000000.0012934519
ZELLERAUEinzelbewerber Schürer 0.0107334530.0000000000
ZELLERAUFreie Demokratische Partei 0.0957879330.0855295069
ZELLERAUFREIE WÄHLER 0.0400065050.0257073565
ZELLERAULiberal-Konservative Reformer 0.0000000000.0000000000
ZELLERAUMarxistisch-Leninistische Partei Deutschlands 0.0000000000.0004850445
ZELLERAUNationaldemokratische Partei Deutschlands 0.0000000000.0001616815
ZELLERAUÖkologisch-Demokratische Partei 0.0154496670.0059822150
ZELLERAUPartei der Humanisten 0.0053667260.0027485853
ZELLERAUPartei für Arbeit, Rechtsstaat, Tierschutz, Elitenförderung und basisdemokratische Initiative0.0000000000.0122877930
ZELLERAUPartei für Gesundheitsforschung 0.0000000000.0011317704
ZELLERAUPARTEI MENSCH UMWELT TIERSCHUTZ 0.0000000000.0111560226
ZELLERAUPiratenpartei Deutschland 0.0000000000.0033953112
ZELLERAUSozialdemokratische Partei Deutschlands 0.1985688730.2004850445
ZELLERAUTeam Todenhöfer – Die Gerechtigkeitspartei 0.0000000000.0038803557
ZELLERAUUNABHÄNGIGE für bürgernahe Demokratie 0.0000000000.0024252223
ZELLERAUV-Partei³ - Partei für Veränderung, Vegetarier und Veganer 0.0000000000.0012934519
ZELLERAUVolt Deutschland 0.0000000000.0059822150
In [22]:
# Stimmen je Parteil [%] unabhängig von Stadtteil 

result %>%
    ungroup() %>%
    select(-`gebiet-name`) %>%
    group_by(partei_beschreibung) %>%
    summarize(Erststimmen = sum(Erststimmen)/sum(result$Erststimmen), Zweitstimmen = sum(Zweitstimmen)/sum(result$Zweitstimmen))
Out[22]:
A tibble: 27 × 3
partei_beschreibungErststimmenZweitstimmen
<chr><dbl><dbl>
Alternative für Deutschland 0.0000000000.0594380122
Basisdemokratische Partei Deutschland 0.0246829560.0120983479
Bayernpartei 0.0000000000.0008195655
BÜNDNIS 90/DIE GRÜNEN 0.2683191770.2558085079
Bündnis C - Christen für Deutschland 0.0000000000.0006894757
Christlich-Soziale Union in Bayern e.V. 0.2916148620.2451541564
DER DRITTE WEG 0.0000000000.0002601795
Deutsche Kommunistische Partei 0.0000000000.0002861975
DIE LINKE 0.0547317720.0541953948
Die Urbane. Eine HipHop Partei 0.0000000000.0007415116
Einzelbewerber Schürer 0.0097239850.0000000000
Freie Demokratische Partei 0.1174338100.1106933784
FREIE WÄHLER 0.0390137290.0248211266
Liberal-Konservative Reformer 0.0000000000.0002211526
Marxistisch-Leninistische Partei Deutschlands 0.0000000000.0001951346
Nationaldemokratische Partei Deutschlands 0.0000000000.0002992065
Ökologisch-Demokratische Partei 0.0137549240.0062443086
Partei der Humanisten 0.0056145220.0024066606
Partei für Arbeit, Rechtsstaat, Tierschutz, Elitenförderung und basisdemokratische Initiative0.0000000000.0092363731
Partei für Gesundheitsforschung 0.0000000000.0011838168
PARTEI MENSCH UMWELT TIERSCHUTZ 0.0000000000.0105242617
Piratenpartei Deutschland 0.0000000000.0038766749
Sozialdemokratische Partei Deutschlands 0.1751102620.1897098998
Team Todenhöfer – Die Gerechtigkeitspartei 0.0000000000.0027058670
UNABHÄNGIGE für bürgernahe Demokratie 0.0000000000.0016131130
V-Partei³ - Partei für Veränderung, Vegetarier und Veganer 0.0000000000.0012878886
Volt Deutschland 0.0000000000.0054897880
In [0]:

In [0]:

In [0]: