如何在R语言中为2017英国选举数据集添加右翼政党得票率列
解决方案
你的代码报错核心是多列选取的语法错误:在R中提取数据框的多列时,必须用c()把列索引或列名打包成向量,不能直接罗列多个数值。
基础修正(匹配你原有的列索引逻辑)
# % Right wing ==== ew_ele$Right2017 <- ((ew_ele$"17CON" + ew_ele$"17UKIP") / rowSums(ew_ele[, c(8, 11)], na.rm = TRUE)) * 100
- 把
ew_ele[,8, 11]改成ew_ele[, c(8, 11)],这是R中选取多列的标准写法 - 加上
na.rm = TRUE是为了避免数据中存在NA值导致计算结果出错
更可靠的写法(用列名代替索引)
如果后续数据集的列顺序可能变动,直接用列名指定目标列会更稳健:
# % Right wing ==== right_parties <- c("17CON", "17UKIP") ew_ele$Right2017 <- (rowSums(ew_ele[, right_parties], na.rm = TRUE) / rowSums(ew_ele[, right_parties], na.rm = TRUE)) * 100
补充:如果要计算占所有政党总票数的比例
如果你实际想算的是右翼政党得票占该选区所有有效选票的比例(而非仅右翼两党内部占比),需要把分母换成所有得票列的行总和。假设所有得票列是第8到第15列,写法如下:
ew_ele$Right2017 <- ((ew_ele$"17CON" + ew_ele$"17UKIP") / rowSums(ew_ele[, 8:15], na.rm = TRUE)) * 100
如果知道所有政党的列名,直接用列名向量替换8:15会更准确。
内容的提问来源于stack exchange,提问作者robert
相关产品推荐
相关产品推荐

