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

在R语言中基于多条件计算问卷参与者得分的技术求助

计算问卷多选题得分的R实现方法

问题背景

现有一份记录参与者问卷答案的DataFrame,其中某一问题包含a、b、c、d四个选项:a和b为正确选项,c和d为错误选项。得分规则为:每选一个正确选项得1分,每选一个错误选项扣0.5分,需要给DataFrame新增score列计算每位参与者的总分。

原始数据的R代码如下:

a <- c(0, 0, 1, 0, 1)
b <- c(0, 1, 1, 1, 0)
c <- c(0, 0, 0, 0, 0)
d <- c(1, 1, 1, 1, 0)
ID <- c("001", "002", "003", "004", "005")
df <- data.frame(ID=ID, a=a, b=b, c=c, d=d)

生成的DataFrame如下:

ID a b c d
1 001 0 0 0 1
2 002 0 1 0 1
3 003 1 1 0 1
4 004 0 1 0 1
5 005 1 0 0 0

解决方案

无需复杂的if/else语句,通过简单的列运算即可实现:

方法一:分步计算

# 计算正确选项得分:a和b列求和,选中(值为1)得1分
correct_score <- df$a + df$b
# 计算错误选项扣分:c和d列求和后乘以-0.5,选中(值为1)扣0.5分
wrong_score <- (df$c + df$d) * (-0.5)
# 合并得到总得分
df$score <- correct_score + wrong_score

方法二:简洁合并写法

可以将所有步骤合并为一行代码:

df$score <- (df$a + df$b) - 0.5*(df$c + df$d)

运行后得到的最终结果:

ID a b c d score
1 001 0 0 0 1  -0.5
2 002 0 1 0 1   0.5
3 003 1 1 0 1   1.5
4 004 0 1 0 1   0.5
5 005 1 0 0 0   1.0

逻辑说明

  • 正确选项得分:直接对a、b列求和,未选中的选项值为0,不影响得分;选中的选项值为1,直接累加得分。
  • 错误选项扣分:对c、d列求和后乘以-0.5,每选中一个错误选项就扣0.5分,未选中则无扣分。
  • 总得分是正确得分与错误扣分的总和,逻辑清晰且无需条件判断。

内容的提问来源于stack exchange,提问作者Filippo Marolla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:33:24