library(readxl)
library(haven)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(foreign)
library(ggplot2)
Daten von Parlament.ch
library(readxl)
ratsmitglieder <- read_excel("Ratsmitglieder_1848_DE.xlsx")
#View(ratsmitglieder)
colnames
colnames(ratsmitglieder)
## [1] "Active" "FirstName" "LastName"
## [4] "GenderAsString" "CantonName" "CantonAbbreviation"
## [7] "CouncilName" "ParlGroupName" "ParlGroupAbbreviation"
## [10] "PartyName" "PartyAbbreviation" "MaritalStatusText"
## [13] "BirthPlace_City" "BirthPlace_Canton" "Mandates"
## [16] "DateJoining" "DateLeaving" "Citizenship"
## [19] "DateOfBirth" "DateOfDeath"
#head(ratsmitglieder$CouncilName)
#head(ratsmitglieder$flag_ge)
Strukturieren
library(tidyverse)
# Nur Nationalrat
nationalrat <- filter(ratsmitglieder, CouncilName == "Nationalrat")
# Wahldatum zu Jahr
nationalrat <- nationalrat %>% mutate(JahrIn = as.character(as.Date(DateJoining, "%d.%m.%Y"),"%Y"))
nationalrat$JahrIn <- as.numeric(nationalrat$JahrIn, stringasfactors =F)
# Enddatum zu Jahr + jetzige zu 2030 (für berechnung)
nationalrat <- nationalrat %>% mutate(JahrOut = as.character(as.Date(DateLeaving, "%d.%m.%Y"),"%Y"))
nationalrat$JahrOut <- as.numeric(nationalrat$JahrOut, stringasfactors =F)
nationalrat$JahrOut <- car::recode(nationalrat$JahrOut, "NA=2030")
nationalrat$JahrOut <- as.numeric(nationalrat$JahrOut, stringasfactors =F)
# Geburtsdatum zu Geburtsjahr
nationalrat <- nationalrat %>% mutate(YOB = as.character(as.Date(DateOfBirth, "%d.%m.%Y"), "%Y"))
nationalrat$YOB <- as.numeric(nationalrat$YOB, stringasfactors =F)
nationalrat <- select(nationalrat, FirstName, LastName, GenderAsString, YOB, JahrIn, JahrOut)
#legislatur 1971
legislatur1971 <- filter(nationalrat, JahrIn <= 1971 & JahrOut >= 1975)
legislatur1971$Legislatur <- 1971
#legislatur1971 %>% distinct()
#View(legislatur1971)
#legislatur1975
legislatur1975 <- filter(nationalrat, JahrIn <= 1975 & JahrOut >= 1979)
legislatur1975$Legislatur <- 1975
#View(legislatur1975)
#legislatur 1979
legislatur1979 <- filter(nationalrat, JahrIn <= 1979 & JahrOut >= 1983)
legislatur1979$Legislatur <- 1979
#View(legislatur1979)
#legislatur 1983
legislatur1983 <- filter(nationalrat, JahrIn <= 1983 & JahrOut >= 1987)
legislatur1983$Legislatur <- 1983
#View(legislatur1983)
#legislatur 1987
legislatur1987 <- filter(nationalrat, JahrIn <= 1987 & JahrOut >= 1991)
legislatur1987$Legislatur <- 1987
#View(legislatur1987)
#legislatur 1991
legislatur1991 <- filter(nationalrat, JahrIn <= 1991 & JahrOut >= 1995)
legislatur1991$Legislatur <- 1991
#View(legislatur1991)
#legislatur 1995 #WTF happened in 2005 - doppelte Herauslöschen
legislatur1995 <- filter(nationalrat, JahrIn <= 1995 & JahrOut >= 1999)
legislatur1995$Legislatur <- 1995
#View(legislatur1995)
#legislatur 1999 # doppelte herauslöschen
legislatur1999 <- filter(nationalrat, JahrIn <= 1999 & JahrOut >= 2003)
legislatur1999$Legislatur <- 1999
#View(legislatur1999)
#legislatur 2003
legislatur2003 <- filter(nationalrat, JahrIn <= 2003 & JahrOut >= 2007)
legislatur2003$Legislatur <- 2003
#View(legislatur2003)
#legislatur 2007
legislatur2007 <- filter(nationalrat, JahrIn <= 2007 & JahrOut >= 2011)
legislatur2007$Legislatur <- 2007
#View(legislatur2007)
#legislatur 2011
legislatur2011 <- filter(nationalrat, JahrIn <= 2011 & JahrOut >= 2015)
legislatur2011$Legislatur <- 2011
#View(legislatur2011)
#legislatur 2015
legislatur2015 <- filter(nationalrat, JahrIn <= 2015 & JahrOut >= 2019)
legislatur2015$Legislatur <- 2015
#View(legislatur2015)
#legislatur 2019
legislatur2019 <- filter(nationalrat, JahrIn <= 2019 & JahrOut >= 2020)
legislatur2019$Legislatur <- 2019
#View(legislatur2019)
# mache 1 neuer Datensatz aus allen Legislaturen
nationalrat2 <- rbind(legislatur1971, legislatur1975, legislatur1979, legislatur1983, legislatur1987, legislatur1991, legislatur1995, legislatur1999, legislatur2003, legislatur2007, legislatur2011, legislatur2015, legislatur2019)
# Alter = Legislatur - YOB #alter = alter während Wahljahr
nationalrat2$Alter <- (nationalrat2$Legislatur - nationalrat2$YOB)
# Klassen
nationalrat2$Klasse <- nationalrat2$Alter
nationalrat2$Klasse[nationalrat2$Klasse <= 25] <- "18-25"
nationalrat2$Klasse[nationalrat2$Klasse > 25 & nationalrat2$Klasse <= 35] <- "26-35"
nationalrat2$Klasse[nationalrat2$Klasse > 35 & nationalrat2$Klasse <= 45] <- "36-45"
nationalrat2$Klasse[nationalrat2$Klasse > 45 & nationalrat2$Klasse <= 55] <- "46-55"
nationalrat2$Klasse[nationalrat2$Klasse > 55 & nationalrat2$Klasse <= 65] <- "56-65"
nationalrat2$Klasse[nationalrat2$Klasse > 65 & nationalrat2$Klasse <= 75] <- "66-75"
nationalrat2$Klasse[nationalrat2$Klasse > 75 & nationalrat2$Klasse <= 85] <- "76-85"
nationalrat2$Klasse[nationalrat2$Klasse > 85 & nationalrat2$Klasse <= 95] <- "86-95"
nationalrat2$Klasse[nationalrat2$Klasse > 95 & nationalrat2$Klasse <= 120] <- ">95"
nationalrat2$NR <- nationalrat2$FirstName
nationalrat2$NR <- 1
head(nationalrat2)
## # A tibble: 6 x 10
## FirstName LastName GenderAsString YOB JahrIn JahrOut Legislatur Alter Klasse
## <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 Erwin Akeret m 1915 1955 1983 1971 56 56-65
## 2 August Albrecht m 1907 1967 1979 1971 64 56-65
## 3 Claudius Alder m 1938 1971 1983 1971 33 26-35
## 4 Walter Allgöwer m 1912 1963 1979 1971 59 56-65
## 5 Jean-Fra… Aubert m 1931 1971 1979 1971 40 36-45
## 6 Felix Auer m 1925 1971 1991 1971 46 46-55
## # … with 1 more variable: NR <dbl>
Daten aggregieren nach Legislatur, Klasse und Geschlecht
library(reshape)
library(reshape2)
nationalrat_agg <- nationalrat2 %>% group_by(Legislatur, Klasse, GenderAsString) %>% select(NR) %>% summarise_all(sum)
head(nationalrat_agg)
## # A tibble: 6 x 4
## # Groups: Legislatur, Klasse [3]
## Legislatur Klasse GenderAsString NR
## <dbl> <chr> <chr> <dbl>
## 1 1971 26-35 f 2
## 2 1971 26-35 m 3
## 3 1971 36-45 f 3
## 4 1971 36-45 m 41
## 5 1971 46-55 f 3
## 6 1971 46-55 m 72
Add Variables for demographic wmn/men of age class - add Bevölkerung 2012-2018
library(readxl)
library(dplyr)
library(tidyverse)
demografie <- read_excel("demografie.xlsx") %>% select(Geschlecht, Alter, `1971`, `1975`, `1979`, `1983`, `1987`, `1991`, `1995`, `1999`, `2003`, `2007`, `2011`, `2015`, `2018`)
demografie <- dplyr::rename(demografie, `2019` = `2018`)
demografie2 <- gather(demografie, "Jahr", "Einwohner", 3:15)
#Klassen
demografie2$Einwohner <- as.numeric(demografie2$Einwohner, stringasfactors =F)
demografie2$Klasse <- demografie2$Alter
demografie2$Klasse[demografie2$Klasse <= 17] <- "0-17"
demografie2$Klasse[demografie2$Klasse > 17 & demografie2$Klasse <= 25] <- "18-25"
demografie2$Klasse[demografie2$Klasse > 25 & demografie2$Klasse <= 35] <- "26-35"
demografie2$Klasse[demografie2$Klasse > 35 & demografie2$Klasse <= 45] <- "36-45"
demografie2$Klasse[demografie2$Klasse > 45 & demografie2$Klasse <= 55] <- "46-55"
demografie2$Klasse[demografie2$Klasse > 55 & demografie2$Klasse <= 65] <- "56-65"
demografie2$Klasse[demografie2$Klasse > 65 & demografie2$Klasse <= 75] <- "66-75"
demografie2$Klasse[demografie2$Klasse > 75 & demografie2$Klasse <= 85] <- "76-85"
demografie2$Klasse[demografie2$Klasse > 85 & demografie2$Klasse <= 95] <- "86-95"
demografie2$Klasse[demografie2$Klasse > 95 & demografie2$Klasse <= 99] <- ">95"
#View(demografie2)
Daten aggregieren
library(reshape)
library(reshape2)
demografie_agg <- demografie2 %>% group_by(Jahr, Klasse, Geschlecht) %>% select(Einwohner) %>% summarise_all(sum)
head(demografie_agg)
## # A tibble: 6 x 4
## # Groups: Jahr, Klasse [3]
## Jahr Klasse Geschlecht Einwohner
## <chr> <chr> <chr> <dbl>
## 1 1971 >95 f 381
## 2 1971 >95 m 148
## 3 1971 0-17 f 698272
## 4 1971 0-17 m 731634
## 5 1971 18-25 f 310332
## 6 1971 18-25 m 316015
Combine data frames
#rename Variables in both data frames
library(tidyverse)
nationalrat_agg <- dplyr::rename(nationalrat_agg, Geschlecht = GenderAsString, Jahr = Legislatur)
#head(nationalrat_agg)
demo_nr <- merge(nationalrat_agg,demografie_agg, by=c("Klasse", "Geschlecht", "Jahr"), all =TRUE)
total_einwohner <- demo_nr %>% group_by(Jahr) %>% tally(Einwohner)
as.data.frame(total_einwohner)
## Jahr n
## 1 1971 5215235
## 2 1975 5288368
## 3 1979 5399236
## 4 1983 5481246
## 5 1987 5567111
## 6 1991 5649804
## 7 1995 5698764
## 8 1999 5757814
## 9 2003 5863241
## 10 2007 5991401
## 11 2011 6138668
## 12 2015 6278459
## 13 2019 6396252
demo_nr <- merge(demo_nr, total_einwohner, by = c("Jahr"), all =TRUE)
demo_nr <- dplyr::rename(demo_nr, Total_Einwohner = n)
demo_nr$Total_Einwohner <- as.numeric(demo_nr$Total_Einwohner)
demo_nr$Einwohner <- ifelse(demo_nr$Geschlecht == "m", -1*demo_nr$Einwohner, demo_nr$Einwohner)
demo_nr$NR <- ifelse(demo_nr$Geschlecht == "m", -1*demo_nr$NR, demo_nr$NR)
#View(demo_nr)
library(ggplot2)
library(plotly)
require(devtools)
#install_version("ggplot2", version = "3.1.1", repos = "http://cran.us.r-project.org")
library(ggplot2)
library(plotly)
library(ggthemes)
plotCH <- ggplot(demo_nr, aes(x = Klasse, y = (100/Total_Einwohner)*Einwohner, fill =Geschlecht,
frame = Jahr, ids = Klasse)) +
#Bevölkerung
geom_col(data = subset(demo_nr, Geschlecht == "f"), position = "identity", fill= 'grey', alpha = .3) +
geom_col(data = subset(demo_nr, Geschlecht == "m"), position = "identity", fill = 'grey', alpha = .3) +
#Nationalräte
geom_col(aes(x = Klasse, y = .5*NR, fill = Geschlecht,
frame = Jahr, ids = Klasse),
data = subset(demo_nr, Geschlecht == "f"), position = "identity", fill = 'chocolate2', alpha = .4) +
geom_col(aes(x = Klasse, y = .5*NR, fill = Geschlecht,
frame = Jahr, ids = Klasse),
data = subset(demo_nr, Geschlecht == "m"), position = "identity", fill = 'darkgoldenrod1', alpha = .4) +
scale_x_discrete(limits = c("0-17", "18-25", "26-35","36-45", "46-55", "56-65", "66-75", "76-85" , "86-95", ">95"))+
scale_y_continuous(breaks = c(-55, -50, -25, 0, 25, 50),
labels = c("", "50%", "25%", "0%", "25%", "50%"),
limits = c(-55, 50)) +
geom_hline(aes(yintercept = 0), colour = 'black', linetype = "dotted", size = 0.25, alpha =.5)+
coord_flip()+ ylab("")+ theme_tufte(base_size = 16) + ylab("")+ theme(text = element_text(family = "Arial")) + xlab("") +
#Frauen & Männer kennzeichnen
ggplot2::annotate("text", x = 9, y = 20, label = "♀", size = 14, colour = 'chocolate2', alpha = .6) +
ggplot2::annotate("text", x = 9, y = -20, label = "♂", size = 14, colour = 'darkgoldenrod1', alpha = .6) +
# NR & Bevölkerung kennzeichen
annotate("text", x = 1, y= -.3, label = "Bevölkerung", size = 5, colour = 'dimgrey') +
annotate("text", x = 5, y = -13, label = "Nationalrat", size = 5, colour = 'chocolate2', alpha = .6)
plot_nr <- ggplotly(plotCH, tooltip = "") %>%
animation_opts(1100, easing = "elastic-in", transition = 300) %>%
animation_slider(font = list(color="black", size =20)) %>%
animation_slider(currentvalue = list(prefix = "", font =list(color = 'grey', size =20)))
plot_nr
library(readxl)
library(haven)
library(dplyr)
library(foreign)
url<- "https://www.bfs.admin.ch/bfsstatic/dam/assets/9386465/appendix"
ergebnisse <-read.csv(url,
sep=";",
encoding="UTF-8",
stringsAsFactors = F)
colnames
colnames(ergebnisse)
## [1] "wahl_jahr" "kanton_nummer"
## [3] "kanton_bezeichnung" "liste_nummer_kanton"
## [5] "liste_bezeichnung" "kandidat_nummer"
## [7] "name" "vorname"
## [9] "geschlecht" "geburtsdatum"
## [11] "geburtsjahr" "wohnort_gemeinde_nummer"
## [13] "wohnort" "beruf"
## [15] "kandidat_status_id" "kandidat_status_de"
## [17] "kandidat_status_fr" "kandidat_status_it"
## [19] "kandidat_status_en" "kandidat_partei_id"
## [21] "partei_bezeichnung_de" "partei_bezeichnung_fr"
## [23] "partei_bezeichnung_it" "partei_bezeichnung_en"
## [25] "flag_gewaehlt" "stimmen_kandidat"
## [27] "KANDIDAT_LISTENPLATZ_1" "KANDIDAT_LISTENPLATZ_2"
Filter nach gewählten + Select
library(dplyr)
library(car)
#add marchesi in TI (nachgerutscht)
ergebnisse$tessin <- ergebnisse$beruf
ergebnisse$tessin <- ergebnisse$tessin <- as.factor(ifelse(ergebnisse$tessin=="Dirigente aziendale", 1, 0))
gewaehlt_19 <- filter(ergebnisse, flag_gewaehlt == 1 | tessin ==1) %>% select(kanton_bezeichnung, name, vorname, geschlecht, geburtsjahr)
#remove
gewaehlt_19 <- filter(gewaehlt_19, name != "Carobbio Guscetti")
head(gewaehlt_19)
## kanton_bezeichnung name vorname geschlecht geburtsjahr
## 1 Zürich Köppel Roger M 1965
## 2 Zürich Rutz Gregor M 1972
## 3 Zürich Heer Alfred (Fredi) M 1961
## 4 Zürich Matter Thomas M 1966
## 5 Zürich Vogt Hans-Ueli M 1969
## 6 Zürich Steinemann Barbara F 1976
Alter & geschlecht umwandeln
library(car)
gewaehlt_19$Alter <- as.numeric(2019- gewaehlt_19$geburtsjahr)
gewaehlt_19$geschlecht <- car::recode(gewaehlt_19$geschlecht, "'M' = 'm'; 'F'='f'")
Altersklassen
gewaehlt_19$Klasse <- gewaehlt_19$Alter
gewaehlt_19$Klasse[gewaehlt_19$Klasse <= 25] <- "18-25"
gewaehlt_19$Klasse[gewaehlt_19$Klasse > 25 & gewaehlt_19$Klasse <= 35] <- "26-35"
gewaehlt_19$Klasse[gewaehlt_19$Klasse > 35 & gewaehlt_19$Klasse <= 45] <- "36-45"
gewaehlt_19$Klasse[gewaehlt_19$Klasse > 45 & gewaehlt_19$Klasse <= 55] <- "46-55"
gewaehlt_19$Klasse[gewaehlt_19$Klasse > 55 & gewaehlt_19$Klasse <= 65] <- "56-65"
gewaehlt_19$Klasse[gewaehlt_19$Klasse > 65 & gewaehlt_19$Klasse <= 75] <- "66-75"
gewaehlt_19$Klasse[gewaehlt_19$Klasse > 75 & gewaehlt_19$Klasse <= 85] <- "76-85"
gewaehlt_19$Klasse[gewaehlt_19$Klasse > 85 & gewaehlt_19$Klasse <= 95] <- "86-95"
gewaehlt_19$Klasse[gewaehlt_19$Klasse > 95 & gewaehlt_19$Klasse <= 120] <- ">95"
#View(gewaehlt_19)
Aggregate
library(car)
gewaehlt_19$NR <- gewaehlt_19$vorname
gewaehlt_19$NR <- 1
gewaehlt_agg <- gewaehlt_19 %>% group_by(Klasse, geschlecht, kanton_bezeichnung) %>% select(NR) %>% summarise_all(sum)
# rename: bern, genf, waadt, graubünden, neuenburg, wallis, freiburg, tessin,
gewaehlt_agg$kanton_bezeichnung <- car::recode(gewaehlt_agg$kanton_bezeichnung, "'Bern / Berne' = 'Bern';'Genève' = 'Genf'; 'St. Gallen' = 'St.Gallen'; 'Vaud' = 'Waadt'; 'Graubünden / Grigioni / Grischun' = 'Graubünden'; 'Neuchâtel' = 'Neuenburg'; 'Valais / Wallis'='Wallis'; 'Fribourg / Freiburg' = 'Freiburg'; 'Ticino' = 'Tessin' ")
#View(gewaehlt_agg$kanton_bezeichnung)
head(gewaehlt_agg)
## # A tibble: 6 x 4
## # Groups: Klasse, geschlecht [3]
## Klasse geschlecht kanton_bezeichnung NR
## <chr> <chr> <chr> <dbl>
## 1 18-25 f Basel-Landschaft 1
## 2 18-25 m Zürich 1
## 3 26-35 f Aargau 2
## 4 26-35 f Bern 2
## 5 26-35 f Genf 1
## 6 26-35 f St.Gallen 1
library(readxl)
demografie_k <- read_excel("Demografie_kantonal.xlsx")
#View(demografie_k)
Klassenbildung
demografie_k$Einwohner <- as.numeric(demografie_k$Einwohner, stringasfactors =F)
demografie_k$Klasse <- demografie_k$Alter
demografie_k$Klasse[demografie_k$Klasse <= 17] <- "0-17"
demografie_k$Klasse[demografie_k$Klasse > 17 & demografie_k$Klasse <= 25] <- "18-25"
demografie_k$Klasse[demografie_k$Klasse > 25 & demografie_k$Klasse <= 35] <- "26-35"
demografie_k$Klasse[demografie_k$Klasse > 35 & demografie_k$Klasse <= 45] <- "36-45"
demografie_k$Klasse[demografie_k$Klasse > 45 & demografie_k$Klasse <= 55] <- "46-55"
demografie_k$Klasse[demografie_k$Klasse > 55 & demografie_k$Klasse <= 65] <- "56-65"
demografie_k$Klasse[demografie_k$Klasse > 65 & demografie_k$Klasse <= 75] <- "66-75"
demografie_k$Klasse[demografie_k$Klasse > 75 & demografie_k$Klasse <= 85] <- "76-85"
demografie_k$Klasse[demografie_k$Klasse > 85 & demografie_k$Klasse <= 95] <- "86-95"
demografie_k$Klasse[demografie_k$Klasse > 95 & demografie_k$Klasse <= 99] <- ">95"
head(demografie_k)
## # A tibble: 6 x 5
## kanton_bezeichnung geschlecht Alter Einwohner Klasse
## <chr> <chr> <dbl> <dbl> <chr>
## 1 Zürich m 0 5905 0-17
## 2 Zürich m 1 6123 0-17
## 3 Zürich m 2 6072 0-17
## 4 Zürich m 3 6154 0-17
## 5 Zürich m 4 5994 0-17
## 6 Zürich m 5 5789 0-17
Aggregate
library(reshape)
library(reshape2)
demografie_k_agg <- demografie_k %>% group_by(Klasse, geschlecht, kanton_bezeichnung) %>% select(Einwohner) %>% summarise_all(sum)
demografie_k_agg$kanton_bezeichnung <- car::recode(demografie_k_agg$kanton_bezeichnung, "'Bern / Berne' = 'Bern';'Genève' = 'Genf'; 'St. Gallen' = 'St.Gallen'; 'Vaud' = 'Waadt'; 'Graubünden / Grigioni / Grischun' = 'Graubünden'; 'Neuchâtel' = 'Neuenburg'; 'Valais / Wallis'='Wallis'; 'Fribourg / Freiburg' = 'Freiburg'; 'Ticino' = 'Tessin' ")
#View(demografie_k_agg$kanton_bezeichnung)
head(demografie_k_agg)
## # A tibble: 6 x 4
## # Groups: Klasse, geschlecht [1]
## Klasse geschlecht kanton_bezeichnung Einwohner
## <chr> <chr> <chr> <dbl>
## 1 >95 f Aargau 450
## 2 >95 f Appenzell Ausserrhoden 61
## 3 >95 f Appenzell Innerrhoden 6
## 4 >95 f Basel-Landschaft 272
## 5 >95 f Basel-Stadt 371
## 6 >95 f Bern 1207
Merge Dataframes
library(tidyverse)
kanton_agg <- merge(demografie_k_agg, gewaehlt_agg, by=c("Klasse", "geschlecht", "kanton_bezeichnung"), all =TRUE)
#kanton_agg
total_einwohner <- kanton_agg %>% group_by(kanton_bezeichnung) %>% tally(Einwohner)
as.data.frame(total_einwohner)
## kanton_bezeichnung n
## 1 Aargau 507783
## 2 Appenzell Ausserrhoden 46220
## 3 Appenzell Innerrhoden 14321
## 4 Basel-Landschaft 222396
## 5 Basel-Stadt 123867
## 6 Bern 865906
## 7 Freiburg 246355
## 8 Genf 299540
## 9 Glarus 30671
## 10 Graubünden 161397
## 11 Jura 62651
## 12 Luzern 333672
## 13 Neuenburg 132143
## 14 Nidwalden 36872
## 15 Obwalden 32296
## 16 Schaffhausen 60626
## 17 Schwyz 124828
## 18 Solothurn 211399
## 19 St.Gallen 385295
## 20 Tessin 255116
## 21 Thurgau 207714
## 22 Uri 31936
## 23 Waadt 533878
## 24 Wallis 265879
## 25 Zug 90917
## 26 Zürich 1112574
kanton_agg <- merge(kanton_agg, total_einwohner, by = c("kanton_bezeichnung"), all =TRUE)
kanton_agg <- dplyr::rename(kanton_agg, Total_Einwohner = n)
#männer daten - setzen um eine zweiseitige grafik zu erhalten
kanton_agg$Einwohner <- ifelse(kanton_agg$geschlecht == "m", -1*kanton_agg$Einwohner, kanton_agg$Einwohner)
kanton_agg$NR <- ifelse(kanton_agg$geschlecht == "m", -1*kanton_agg$NR, kanton_agg$NR)
head(kanton_agg, 10)
## kanton_bezeichnung Klasse geschlecht Einwohner NR Total_Einwohner
## 1 Aargau >95 f 450 NA 507783
## 2 Aargau 66-75 f 29344 NA 507783
## 3 Aargau 86-95 m -3920 NA 507783
## 4 Aargau 56-65 m -36129 -4 507783
## 5 Aargau 46-55 m -38734 -2 507783
## 6 Aargau 46-55 f 40016 2 507783
## 7 Aargau 66-75 m -27189 NA 507783
## 8 Aargau 36-45 f 30416 1 507783
## 9 Aargau 26-35 m -30223 -1 507783
## 10 Aargau 18-25 m -23148 NA 507783
in Regionen einteilen - ü10 sitze eigens
#männer daten - zurücksetzen für berechnungen
kanton_agg$Einwohner <- ifelse(kanton_agg$geschlecht == "m", -1*kanton_agg$Einwohner, kanton_agg$Einwohner)
kanton_agg$NR <- ifelse(kanton_agg$geschlecht == "m", -1*kanton_agg$NR, kanton_agg$NR)
#ü10 Sitze: Aargau, Bern, Genf, Luzern, St.Gallen, Waadt, Zürich
kanton_agg$Region <- kanton_agg$kanton_bezeichnung
#Region Mittelland
kanton_agg$Region <- car::recode(kanton_agg$kanton_bezeichnung,
"'Bern'='Mittelland';'Freiburg' = 'Mittelland'; 'Solothurn' = 'Mittelland'; 'Neuenburg'= 'Mittelland'; 'Jura' = 'Mittelland'; 'Basel-Landschaft'='Nordwestschweiz'; 'Basel-Stadt'='Nordwestschweiz'; 'Aargau'='Nordwestschweiz'; 'Uri'='Zentralschweiz'; 'Schwyz'='Zentralschweiz';
'Obwalden'='Zentralschweiz'; 'Nidwalden'='Zentralschweiz'; 'Zug'= 'Zentralschweiz';
'Glarus' = 'Ostschweiz'; 'Schaffhausen'= 'Ostschweiz';
'Appenzell Ausserrhoden'='Ostschweiz'; 'Appenzell Innerrhoden'='Ostschweiz'; 'St.Gallen' ='Ostschweiz'; 'Graubünden'='Ostschweiz';
'Thurgau'='Ostschweiz'; 'Genf'='Genfersee'; 'Waadt' ='Genfersee'; 'Luzern'='Zentralschweiz'")
#Regionen Einwohner & Sitze
total_einwohner_r <- kanton_agg %>% group_by(Region) %>% tally(Einwohner)
total_einwohner_r <- dplyr::rename(total_einwohner_r, Total_Einwohner_R = n)
nr_sitze_r <- kanton_agg %>% group_by(Region) %>% tally(NR)
nr_sitze_r <- dplyr::rename(nr_sitze_r, NR_sitze_R = n)
kanton_agg <- merge(kanton_agg, total_einwohner_r, by = "Region", all =TRUE)
kanton_agg <- merge(kanton_agg, nr_sitze_r, by= "Region", all =TRUE)
kanton_agg$Einwohner <- ifelse(kanton_agg$geschlecht == "m", -1*kanton_agg$Einwohner, kanton_agg$Einwohner)
kanton_agg$NR <- ifelse(kanton_agg$geschlecht == "m", -1*kanton_agg$NR, kanton_agg$NR)
kanton_agg2 <- kanton_agg %>% filter( Region != "Tessin" )
kanton_agg2 <- kanton_agg2 %>% filter(Region !="Wallis")
#View(kanton_agg$Region)
Restliche Regionen
library(ggplot2)
library(ggthemes)
plot2 <- ggplot(kanton_agg2, aes(x = Klasse, y = (100/Total_Einwohner_R)*Einwohner, fill =geschlecht)) +
#Bevölkerung
geom_bar(data = subset(kanton_agg2, geschlecht == "f"), stat = "identity", fill= 'grey', alpha = .3) +
geom_bar(data = subset(kanton_agg2, geschlecht == "m"), stat = "identity", fill = 'grey', alpha = .3) +
#Nationalräte
geom_bar(aes(x = Klasse, y = (100/NR_sitze_R)*NR, fill = geschlecht), data = subset(kanton_agg2, geschlecht == "f"), stat = "identity", fill = 'chocolate2', alpha = .4) +
geom_bar(aes(x = Klasse, y = (100/NR_sitze_R)*NR, fill = geschlecht), data = subset(kanton_agg2, geschlecht == "m"), stat = "identity", fill = 'darkgoldenrod1', alpha = .4) +
facet_wrap(~Region) +
geom_hline(aes(yintercept = 0), colour = 'black', linetype = "dotted", size = 0.25, alpha =.5)+
geom_vline(aes(xintercept = .52), colour = 'black', alpha = .2) +
coord_flip() + theme_tufte(base_size = 20) + ylab("")+ xlab("") + theme(text = element_text(c(family = "Arial"))) +
scale_x_discrete(limits = c("0-17", "18-25", "26-35","36-45", "46-55", "56-65", "66-75", "76-85" , "86-95", ">95"))+
scale_y_continuous(breaks = c(-40, -20, 0, 20), # Zahlen kannst du nach Belieben anpassen
labels = c("40%", "20%", "0", "20%")) +
#Frauen & Männer kennzeichnen
annotate("text", x = 9, y = 20, label = "♀", size = 13, colour = 'chocolate2', alpha = .6) +
annotate("text", x = 9, y = -20, label = "♂", size = 13, colour = 'darkgoldenrod1', alpha = .6)
plot2
Nur Tessin & Wallis weil spannend
#View(kanton_agg)
kanton_agg3 <- kanton_agg %>% filter(Region == "Tessin")
kanton_agg4 <- kanton_agg%>% filter(kanton_bezeichnung == "Wallis")
kanton_agg5 <- merge(kanton_agg3, kanton_agg4, all = TRUE)
plotTIVS <- ggplot(kanton_agg5, aes(x = Klasse, y = (100/Total_Einwohner)*Einwohner, fill =geschlecht)) +
#Bevölkerung
geom_bar(data = subset(kanton_agg5, geschlecht == "f"), stat = "identity", fill= 'grey', alpha = .3) +
geom_bar(data = subset(kanton_agg5, geschlecht == "m"), stat = "identity", fill = 'grey', alpha = .3) +
#Nationalräte
geom_bar(aes(x = Klasse, y = 12.5*NR, fill = geschlecht), data = subset(kanton_agg5, geschlecht == "f"), stat = "identity", fill = 'chocolate2', alpha = .4) +
geom_bar(aes(x = Klasse, y = 12.5*NR, fill = geschlecht), data = subset(kanton_agg5, geschlecht == "m"), stat = "identity", fill = 'darkgoldenrod1', alpha = .4) +
scale_x_discrete(limits = c("0-17", "18-25", "26-35","36-45", "46-55", "56-65", "66-75", "76-85" , "86-95", ">95"))+
scale_y_continuous(breaks = c(-40, -20, 0, 20), # Zahlen kannst du nach Belieben anpassen
labels = c("40%", "20%", "0", "20%")) +
facet_wrap(~kanton_bezeichnung) +
geom_hline(aes(yintercept = 0), colour = 'black', linetype = "dotted", size = 0.25, alpha =.5)+
geom_vline(aes(xintercept = .54), colour = 'black', alpha = .2) +
coord_flip() + theme_tufte() + ylab("")+ theme(text = element_text(family = "Arial", size = 18)) + xlab("") +
#Frauen & Männer kennzeichnen
annotate("text", x = 9, y = 20, label = "♀", colour = 'chocolate2', alpha = .6, size = 13) +
annotate("text", x = 9, y = -20, label = "♂", colour = 'darkgoldenrod1', alpha = .6, size = 13)
plotTIVS