You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:55:19