using CSV
using Chain
using DataFramesMeta
using Statistics
import DataFrames as df
ENV["COLUMNS"] = 350
350
data = DataFrame(CSV.File("Open-Data-Bundestagswahl1343_wue_stadt.csv"))
datum | wahl | ags | gebiet-nr | gebiet-name | max-schnellmeldungen | anz-schnellmeldungen | A1 | A2 | A3 | A | B | B1 | C | D | E | F | D1 | F1 | D2 | F2 | D3 | F3 | D4 | F4 | D5 | F5 | D6 | F6 | D7 | F7 | D8 | F8 | D9 | F9 | D10 | F10 | D11 | F11 | D12 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
String | String | Int64 | Missing | String | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | |
1 | 26.09.2021 | Wahl zum Deutschen Bundestag | 9663000 | missing | ALTSTADT | 32 | 32 | 5959 | 9117 | 0 | 15076 | 12529 | 8761 | 107 | 12422 | 42 | 12487 | 2814 | 2333 | 1845 | 2030 | 0 | 477 | 1530 | 1538 | 4449 | 4267 | 793 | 835 | 380 | 233 | 167 | 71 | 0 | 115 | 0 | 5 | 0 | 163 | 0 |
2 | 26.09.2021 | Wahl zum Deutschen Bundestag | 9663000 | missing | ZELLERAU | 12 | 12 | 4313 | 4097 | 0 | 8410 | 6226 | 3905 | 77 | 6149 | 41 | 6185 | 1370 | 1173 | 1221 | 1240 | 0 | 393 | 589 | 529 | 1844 | 1731 | 513 | 541 | 246 | 159 | 95 | 37 | 0 | 69 | 0 | 9 | 0 | 76 | 0 |
3 | 26.09.2021 | Wahl zum Deutschen Bundestag | 9663000 | missing | DÜRRBACHTAL | 10 | 10 | 1936 | 2517 | 0 | 4453 | 3690 | 2384 | 43 | 3647 | 17 | 3673 | 1410 | 1174 | 627 | 744 | 0 | 242 | 407 | 380 | 686 | 674 | 153 | 130 | 166 | 110 | 49 | 21 | 0 | 59 | 0 | 6 | 0 | 23 | 0 |
4 | 26.09.2021 | Wahl zum Deutschen Bundestag | 9663000 | missing | GROMBÜHL | 10 | 10 | 2900 | 3188 | 0 | 6088 | 4558 | 3052 | 42 | 4516 | 14 | 4544 | 883 | 733 | 844 | 845 | 0 | 202 | 479 | 495 | 1553 | 1446 | 364 | 376 | 170 | 118 | 65 | 38 | 0 | 64 | 0 | 2 | 0 | 66 | 0 |
5 | 26.09.2021 | Wahl zum Deutschen Bundestag | 9663000 | missing | LINDLEINSMÜHLE | 4 | 4 | 1916 | 1386 | 0 | 3302 | 2128 | 1303 | 38 | 2090 | 23 | 2105 | 726 | 646 | 473 | 494 | 0 | 275 | 248 | 184 | 266 | 255 | 131 | 96 | 128 | 55 | 23 | 11 | 0 | 16 | 0 | 1 | 0 | 15 | 0 |
6 | 26.09.2021 | Wahl zum Deutschen Bundestag | 9663000 | missing | FRAUENLAND | 26 | 26 | 6084 | 8374 | 0 | 14458 | 12074 | 7958 | 91 | 11983 | 41 | 12033 | 3398 | 2905 | 1867 | 2167 | 0 | 520 | 1482 | 1429 | 3630 | 3417 | 585 | 600 | 399 | 265 | 172 | 81 | 0 | 131 | 0 | 10 | 0 | 111 | 0 |
7 | 26.09.2021 | Wahl zum Deutschen Bundestag | 9663000 | missing | SANDERAU | 16 | 16 | 4463 | 6685 | 0 | 11148 | 9191 | 6361 | 63 | 9128 | 29 | 9162 | 2273 | 1951 | 1574 | 1681 | 0 | 331 | 1008 | 979 | 3020 | 2888 | 529 | 554 | 268 | 224 | 133 | 56 | 0 | 84 | 0 | 4 | 0 | 78 | 0 |
8 | 26.09.2021 | Wahl zum Deutschen Bundestag | 9663000 | missing | HEIDINGSFELD | 14 | 14 | 3652 | 4135 | 0 | 7787 | 5934 | 3918 | 76 | 5858 | 44 | 5890 | 2134 | 1788 | 1095 | 1268 | 0 | 405 | 587 | 549 | 1138 | 1074 | 252 | 257 | 282 | 181 | 98 | 53 | 0 | 70 | 0 | 6 | 0 | 46 | 0 |
9 | 26.09.2021 | Wahl zum Deutschen Bundestag | 9663000 | missing | HEUCHELHOF | 12 | 12 | 4108 | 2408 | 0 | 6516 | 4291 | 2295 | 105 | 4186 | 54 | 4237 | 1499 | 1274 | 858 | 856 | 0 | 645 | 555 | 425 | 557 | 565 | 215 | 161 | 229 | 84 | 35 | 18 | 0 | 48 | 0 | 0 | 0 | 18 | 0 |
10 | 26.09.2021 | Wahl zum Deutschen Bundestag | 9663000 | missing | STEINBACHTAL | 8 | 8 | 1318 | 2368 | 0 | 3686 | 3227 | 2262 | 15 | 3212 | 2 | 3225 | 1089 | 959 | 405 | 443 | 0 | 127 | 535 | 548 | 856 | 817 | 130 | 131 | 81 | 62 | 30 | 10 | 0 | 32 | 0 | 1 | 0 | 16 | 0 |
11 | 26.09.2021 | Wahl zum Deutschen Bundestag | 9663000 | missing | VERSBACH | 8 | 8 | 2262 | 3075 | 0 | 5337 | 4368 | 2949 | 48 | 4320 | 17 | 4351 | 1492 | 1251 | 864 | 943 | 0 | 279 | 489 | 443 | 839 | 864 | 183 | 163 | 214 | 158 | 65 | 24 | 0 | 43 | 0 | 3 | 0 | 32 | 0 |
12 | 26.09.2021 | Wahl zum Deutschen Bundestag | 9663000 | missing | LENGFELD | 14 | 14 | 3620 | 4529 | 0 | 8149 | 6418 | 4321 | 69 | 6349 | 25 | 6393 | 2250 | 1889 | 1265 | 1378 | 0 | 441 | 780 | 714 | 1166 | 1168 | 252 | 241 | 298 | 175 | 80 | 41 | 0 | 62 | 0 | 12 | 0 | 54 | 0 |
13 | 26.09.2021 | Wahl zum Deutschen Bundestag | 9663000 | missing | ROTTENBAUER | 6 | 6 | 1483 | 1694 | 0 | 3177 | 2608 | 1608 | 59 | 2549 | 23 | 2585 | 944 | 769 | 442 | 494 | 0 | 232 | 284 | 296 | 498 | 498 | 82 | 81 | 120 | 84 | 39 | 19 | 0 | 16 | 0 | 4 | 0 | 12 | 0 |
select(data,-:A2)
MethodError: no method matching -(::Symbol) Closest candidates are: -(::Union{Int128, Int16, Int32, Int64, Int8, UInt128, UInt16, UInt32, UInt64, UInt8}) at /ext/julia/julia-1.7.1/share/julia/base/int.jl:85 -(::T, ::T) where T<:Union{Int128, Int16, Int32, Int64, Int8, UInt128, UInt16, UInt32, UInt64, UInt8} at /ext/julia/julia-1.7.1/share/julia/base/int.jl:86 -(::Union{UInt16, UInt32, UInt64, UInt8}, ::BigInt) at /ext/julia/julia-1.7.1/share/julia/base/gmp.jl:532 ... Stacktrace: [1] top-level scope @ In[2]:1 [2] eval @ ./boot.jl:373 [inlined] [3] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String) @ Base ./loading.jl:1196
names(data)
data2 = select(data,names(data)[19:end])
F1 | D2 | F2 | D3 | F3 | D4 | F4 | D5 | F5 | D6 | F6 | D7 | F7 | D8 | F8 | D9 | F9 | D10 | F10 | D11 | F11 | D12 | F12 | D13 | F13 | D14 | F14 | D15 | F15 | D16 | F16 | D17 | F17 | D18 | F18 | D19 | F19 | D20 | F20 | D21 | F21 | D22 | F22 | D23 | F23 | D24 | F24 | D25 | F25 | D26 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | Int64 | |
1 | 2333 | 1845 | 2030 | 0 | 477 | 1530 | 1538 | 4449 | 4267 | 793 | 835 | 380 | 233 | 167 | 71 | 0 | 115 | 0 | 5 | 0 | 163 | 0 | 45 | 0 | 2 | 0 | 28 | 0 | 12 | 0 | 3 | 0 | 7 | 242 | 123 | 0 | 8 | 0 | 2 | 0 | 12 | 0 | 2 | 97 | 41 | 0 | 39 | 0 | 7 | 0 |
2 | 1173 | 1221 | 1240 | 0 | 393 | 589 | 529 | 1844 | 1731 | 513 | 541 | 246 | 159 | 95 | 37 | 0 | 69 | 0 | 9 | 0 | 76 | 0 | 21 | 0 | 1 | 0 | 8 | 0 | 7 | 0 | 3 | 0 | 3 | 172 | 79 | 0 | 2 | 0 | 3 | 0 | 8 | 0 | 0 | 33 | 17 | 0 | 24 | 0 | 15 | 0 |
3 | 1174 | 627 | 744 | 0 | 242 | 407 | 380 | 686 | 674 | 153 | 130 | 166 | 110 | 49 | 21 | 0 | 59 | 0 | 6 | 0 | 23 | 0 | 21 | 0 | 1 | 0 | 6 | 0 | 3 | 0 | 0 | 0 | 1 | 84 | 43 | 0 | 2 | 0 | 0 | 0 | 1 | 0 | 2 | 19 | 6 | 0 | 7 | 0 | 7 | 0 |
4 | 733 | 844 | 845 | 0 | 202 | 479 | 495 | 1553 | 1446 | 364 | 376 | 170 | 118 | 65 | 38 | 0 | 64 | 0 | 2 | 0 | 66 | 0 | 26 | 0 | 0 | 0 | 3 | 0 | 7 | 0 | 2 | 0 | 1 | 93 | 48 | 0 | 6 | 0 | 2 | 0 | 1 | 0 | 0 | 29 | 14 | 0 | 12 | 0 | 9 | 0 |
5 | 646 | 473 | 494 | 0 | 275 | 248 | 184 | 266 | 255 | 131 | 96 | 128 | 55 | 23 | 11 | 0 | 16 | 0 | 1 | 0 | 15 | 0 | 5 | 0 | 1 | 0 | 3 | 0 | 3 | 0 | 1 | 0 | 1 | 62 | 19 | 0 | 1 | 0 | 0 | 0 | 3 | 0 | 1 | 5 | 2 | 0 | 10 | 0 | 3 | 0 |
6 | 2905 | 1867 | 2167 | 0 | 520 | 1482 | 1429 | 3630 | 3417 | 585 | 600 | 399 | 265 | 172 | 81 | 0 | 131 | 0 | 10 | 0 | 111 | 0 | 40 | 0 | 5 | 0 | 16 | 0 | 9 | 0 | 0 | 0 | 4 | 282 | 154 | 0 | 7 | 0 | 3 | 0 | 7 | 0 | 3 | 66 | 34 | 0 | 24 | 0 | 12 | 0 |
7 | 1951 | 1574 | 1681 | 0 | 331 | 1008 | 979 | 3020 | 2888 | 529 | 554 | 268 | 224 | 133 | 56 | 0 | 84 | 0 | 4 | 0 | 78 | 0 | 44 | 0 | 1 | 0 | 13 | 0 | 7 | 0 | 2 | 0 | 0 | 191 | 116 | 0 | 7 | 0 | 0 | 0 | 5 | 0 | 1 | 66 | 23 | 0 | 18 | 0 | 16 | 0 |
8 | 1788 | 1095 | 1268 | 0 | 405 | 587 | 549 | 1138 | 1074 | 252 | 257 | 282 | 181 | 98 | 53 | 0 | 70 | 0 | 6 | 0 | 46 | 0 | 10 | 0 | 2 | 0 | 4 | 0 | 6 | 0 | 1 | 0 | 0 | 172 | 77 | 0 | 7 | 0 | 4 | 0 | 5 | 0 | 2 | 32 | 13 | 0 | 18 | 0 | 10 | 0 |
9 | 1274 | 858 | 856 | 0 | 645 | 555 | 425 | 557 | 565 | 215 | 161 | 229 | 84 | 35 | 18 | 0 | 48 | 0 | 0 | 0 | 18 | 0 | 18 | 0 | 3 | 0 | 2 | 0 | 10 | 0 | 0 | 0 | 1 | 167 | 58 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 15 | 6 | 0 | 17 | 0 | 10 | 0 |
10 | 959 | 405 | 443 | 0 | 127 | 535 | 548 | 856 | 817 | 130 | 131 | 81 | 62 | 30 | 10 | 0 | 32 | 0 | 1 | 0 | 16 | 0 | 3 | 0 | 1 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 58 | 35 | 0 | 1 | 0 | 2 | 0 | 3 | 0 | 1 | 10 | 5 | 0 | 0 | 0 | 5 | 0 |
11 | 1251 | 864 | 943 | 0 | 279 | 489 | 443 | 839 | 864 | 183 | 163 | 214 | 158 | 65 | 24 | 0 | 43 | 0 | 3 | 0 | 32 | 0 | 25 | 0 | 2 | 0 | 3 | 0 | 13 | 0 | 1 | 0 | 2 | 109 | 57 | 0 | 3 | 0 | 1 | 0 | 5 | 0 | 4 | 13 | 7 | 0 | 9 | 0 | 8 | 0 |
12 | 1889 | 1265 | 1378 | 0 | 441 | 780 | 714 | 1166 | 1168 | 252 | 241 | 298 | 175 | 80 | 41 | 0 | 62 | 0 | 12 | 0 | 54 | 0 | 27 | 0 | 4 | 0 | 8 | 0 | 8 | 0 | 2 | 0 | 2 | 165 | 87 | 0 | 6 | 0 | 1 | 0 | 4 | 0 | 0 | 21 | 9 | 0 | 27 | 0 | 17 | 0 |
13 | 769 | 442 | 494 | 0 | 232 | 284 | 296 | 498 | 498 | 82 | 81 | 120 | 84 | 39 | 19 | 0 | 16 | 0 | 4 | 0 | 12 | 0 | 13 | 0 | 0 | 0 | 0 | 0 | 6 | 0 | 0 | 0 | 0 | 89 | 34 | 0 | 2 | 0 | 1 | 0 | 2 | 0 | 0 | 23 | 8 | 0 | 3 | 0 | 5 | 0 |
typeof(data2)
DataFrame
df1 = DataFrame(a=["x", "y"], b=[1.0, 2.0], c=[3, 4], d=[true, false])
a | b | c | d | |
---|---|---|---|---|
String | Float64 | Int64 | Bool | |
1 | x | 1.0 | 3 | 1 |
2 | y | 2.0 | 4 | 0 |
df.permutedims(df1, 1) # note the column types
MethodError: no method matching permutedims(::DataFrame, ::Int64) Closest candidates are: permutedims(::StridedArray, ::Any) at /ext/julia/julia-1.7.1/share/julia/base/multidimensional.jl:1498 permutedims(::LinearAlgebra.Diagonal, ::Any) at /ext/julia/julia-1.7.1/share/julia/stdlib/v1.7/LinearAlgebra/src/diagonal.jl:565 permutedims(::SparseArrays.AbstractSparseMatrixCSC, ::Any) at /ext/julia/julia-1.7.1/share/julia/stdlib/v1.7/SparseArrays/src/sparsematrix.jl:1094 ... Stacktrace: [1] top-level scope @ In[37]:1 [2] eval @ ./boot.jl:373 [inlined] [3] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String) @ Base ./loading.jl:1196
@select(data, :A1,:A2)
LoadError: ArgumentError: Expressions not of the form `y = f(:x)` are currently disallowed. in expression starting at In[20]:1 Stacktrace: [1] fun_to_vec(ex::Expr; nolhs::Bool, gensym_names::Bool, wrap_byrow::Bool) @ DataFramesMeta /ext/julia/depot/packages/DataFramesMeta/z0mc6/src/parsing.jl:215 [2] (::DataFramesMeta.var"#30#31"{Bool})(ex::Expr) @ DataFramesMeta ./none:0 [3] iterate(::Base.Generator{Vector{Any}, DataFramesMeta.var"#30#31"{Bool}}) @ Base ./generator.jl:47 [4] select_helper(x::Symbol, args::Expr) @ DataFramesMeta /ext/julia/depot/packages/DataFramesMeta/z0mc6/src/macros.jl:976 [5] var"@select"(__source__::LineNumberNode, __module__::Module, x::Any, args::Vararg{Any}) @ DataFramesMeta /ext/julia/depot/packages/DataFramesMeta/z0mc6/src/macros.jl:1078 [6] eval @ ./boot.jl:373 [inlined] [7] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String) @ Base ./loading.jl:1196
permutedims(data2, 1)
MethodError: no method matching permutedims(::DataFrame, ::Int64) Closest candidates are: permutedims(::StridedArray, ::Any) at /ext/julia/julia-1.7.1/share/julia/base/multidimensional.jl:1498 permutedims(::LinearAlgebra.Diagonal, ::Any) at /ext/julia/julia-1.7.1/share/julia/stdlib/v1.7/LinearAlgebra/src/diagonal.jl:565 permutedims(::SparseArrays.AbstractSparseMatrixCSC, ::Any) at /ext/julia/julia-1.7.1/share/julia/stdlib/v1.7/SparseArrays/src/sparsematrix.jl:1094 ... Stacktrace: [1] top-level scope @ In[31]:1 [2] eval @ ./boot.jl:373 [inlined] [3] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String) @ Base ./loading.jl:1196
permutedims(A::AbstractArray, perm)
Permute the dimensions of array A
. perm
is a vector or a tuple of length ndims(A)
specifying the permutation.
See also permutedims!
, PermutedDimsArray
, transpose
, invperm
.
jldoctest
julia> A = reshape(Vector(1:8), (2,2,2))
2×2×2 Array{Int64, 3}:
[:, :, 1] =
1 3
2 4
[:, :, 2] =
5 7
6 8
julia> permutedims(A, (3, 2, 1))
2×2×2 Array{Int64, 3}:
[:, :, 1] =
1 3
5 7
[:, :, 2] =
2 4
6 8
julia> B = randn(5, 7, 11, 13);
julia> perm = [4,1,3,2];
julia> size(permutedims(B, perm))
(13, 5, 11, 7)
julia> size(B)[perm] == ans
true
permutedims(m::AbstractMatrix)
Permute the dimensions of the matrix m
, by flipping the elements across the diagonal of the matrix. Differs from LinearAlgebra
's transpose
in that the operation is not recursive.
```jldoctest; setup = :(using LinearAlgebra) julia> a = [1 2; 3 4];
julia> b = [5 6; 7 8];
julia> c = [9 10; 11 12];
julia> d = [13 14; 15 16];
julia> X = [[a] [b]; [c] [d]] 2×2 Matrix{Matrix{Int64}}: [1 2; 3 4] [5 6; 7 8] [9 10; 11 12] [13 14; 15 16]
julia> permutedims(X) 2×2 Matrix{Matrix{Int64}}: [1 2; 3 4] [9 10; 11 12] [5 6; 7 8] [13 14; 15 16]
julia> transpose(X) 2×2 transpose(::Matrix{Matrix{Int64}}) with eltype Transpose{Int64, Matrix{Int64}}: [1 3; 2 4] [9 11; 10 12] [5 7; 6 8] [13 15; 14 16]
---
permutedims(v::AbstractVector)
Reshape vector `v` into a `1 × length(v)` row matrix. Differs from `LinearAlgebra`'s [`transpose`](@ref) in that the operation is not recursive.
# Examples
```jldoctest; setup = :(using LinearAlgebra)
julia> permutedims([1, 2, 3, 4])
1×4 Matrix{Int64}:
1 2 3 4
julia> V = [[[1 2; 3 4]]; [[5 6; 7 8]]]
2-element Vector{Matrix{Int64}}:
[1 2; 3 4]
[5 6; 7 8]
julia> permutedims(V)
1×2 Matrix{Matrix{Int64}}:
[1 2; 3 4] [5 6; 7 8]
julia> transpose(V)
1×2 transpose(::Vector{Matrix{Int64}}) with eltype Transpose{Int64, Matrix{Int64}}:
[1 3; 2 4] [5 7; 6 8]
DataFrame(CSV.File("okvote-fields.tsv"))
column | stimme | partei_beschreibung | |
---|---|---|---|
String | String? | String | |
1 | datum | missing | Datum des Wahltermins |
2 | wahl | missing | Name der Wahl |
3 | ags | missing | AGS der Behörde |
4 | gebiet-nr | missing | Nummer des Wahlgebiets |
5 | gebiet-name | missing | Name des Wahlgebiets |
6 | max-schnellmeldungen | missing | Anzahl an insgesamt erwarteten Schnellmeldungen im Wahlgebiet |
7 | anz-schnellmeldungen | missing | Anzahl an bisher eingegangenen Schnellmeldungen im Wahlgebiet |
8 | A1 | missing | Wahlberechtigte ohne Sperrvermerk 'W' |
9 | A2 | missing | Wahlberechtigte mit Sperrvermerk 'W' |
10 | A3 | missing | Wahlberechtigte nicht im Wählerverzeichnis |
11 | A | missing | Wahlberechtigte insgesamt |
12 | B | missing | Wähler |
13 | B1 | missing | Wähler mit Wahlschein |
14 | C | Erststimmen | Ungültige Erststimmen |
15 | D | Erststimmen | Gültige Erststimmen |
16 | E | Zweitstimmen | Ungültige Zweitstimmen |
17 | F | Zweitstimmen | Gültige Zweitstimmen |
18 | D1 | Erststimmen | Christlich-Soziale Union in Bayern e.V. |
19 | F1 | Zweitstimmen | Christlich-Soziale Union in Bayern e.V. |
20 | D2 | Erststimmen | Sozialdemokratische Partei Deutschlands |
21 | F2 | Zweitstimmen | Sozialdemokratische Partei Deutschlands |
22 | D3 | Erststimmen | Alternative für Deutschland |
23 | F3 | Zweitstimmen | Alternative für Deutschland |
24 | D4 | Erststimmen | Freie Demokratische Partei |
25 | F4 | Zweitstimmen | Freie Demokratische Partei |
26 | D5 | Erststimmen | BÜNDNIS 90/DIE GRÜNEN |
27 | F5 | Zweitstimmen | BÜNDNIS 90/DIE GRÜNEN |
28 | D6 | Erststimmen | DIE LINKE |
29 | F6 | Zweitstimmen | DIE LINKE |
30 | D7 | Erststimmen | FREIE WÄHLER |
⋮ | ⋮ | ⋮ | ⋮ |