library(foreign)
ess <- read.spss("ESS11_unlabeled.0-10.sav", to.data.frame = TRUE, use.value.labels = FALSE)
prt_labels <- {
lbls <- attr(ess$prtvtffr, "value.labels")
if (is.null(lbls)) {
as.character(ess$prtvtffr)
} else {
code_to_label <- setNames(names(lbls), lbls)
unname(code_to_label[as.character(ess$prtvtffr)])
}
}
fr_idx <- ess$cntry == "FR"
ess_fr <- ess[fr_idx, , drop = FALSE]
prt_fr <- prt_labels[fr_idx]
prt_fr_ascii <- iconv(prt_fr, to = "ASCII//TRANSLIT", sub = "")
match <- grepl("(Rassemblement National|Front\\s*National|\\bRN\\b|Reconquete)", prt_fr_ascii, ignore.case = TRUE)
match[is.na(match)] <- FALSE
vote_rw <- as.integer(ess_fr$vote == 1 & match)
agg <- data.frame(
n = nrow(ess_fr),
vote_rw_share = sum(vote_rw * ess_fr$anweight, na.rm = TRUE) / sum(ess_fr$anweight, na.rm = TRUE),
agea = weighted.mean(ess_fr$agea, ess_fr$anweight, na.rm = TRUE)
)
knitr::kable(
agg,
digits = 3,
col.names = c("Sample (n)", "Right-wing vote share (weighted)", "Age (weighted mean)"),
caption = "France (weighted)"
)
France (weighted)
| 1771 |
0.088 |
48.249 |