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)

Arguments

votes

A numeric vector giving the redistributes votes

parties

A character vector indicating the names of parties with respective votes.

n_seats

The total number of seats that can be assigned to the different parties.

Value

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.

See also

Examples

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