Calculates number of seats for the respective parties that have received more than 5% of votes (according to the method of Sainte-Lague/Schepers, see https://www.wahlrecht.de/verfahren/rangmasszahlen.html).
sls(votes, parties, n_seats = 598L)A named integer vector of seat counts, one entry per party,
in the same order as parties. The vector has a logical attribute
ties: TRUE if two or more parties had equal claim to the last
seat (i.e. the result is not uniquely determined and was resolved randomly),
FALSE otherwise. When ties = TRUE, re-running with a different
random seed may produce a different but equally valid seat distribution.
library(coalitions)
library(dplyr)
# get the latest survey for a sample of German federal election polls
surveys <- get_latest(surveys_sample) %>% ungroup() %>% slice(1) %>% tidyr::unnest("survey")
# calculate the seat distribution based on Sainte-Lague/Schepers for a parliament with 300 seats
sls(surveys$votes, surveys$party, n_seats = 300)
#> [1] 24 114 24 24 27 15 72
#> attr(,"ties")
#> [1] FALSE