根据R中的多个条件计算分数

问题描述 投票:0回答:1

我正在处理一个数据框,其中显示了几位参与者对问卷调查的回答。某个问题可以有很多正确答案,数据如下:

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)
df
 ID a b c d
001 0 0 0 1
002 0 1 0 1
003 1 1 0 1
004 0 1 0 1
005 1 0 0 0

a、b、c、d 是同一问题的不同答案选项。例如,参与者001只勾选了选项d,而参与者002选择了b和d。

假设只有a和b是正确答案,而c和d是错误的。我想计算一个分数,表明每个参与者的知识程度。 对于每个正确答案(a 或 b),参与者必须获得 1 分。对于每个错误答案(c 或 d),参与者将损失 0.5 分。

因此,我需要向数据框中添加一个新变量“分数”,它是分配给每个参与者的分数的sum。 类似 - 如果“a == 1”<- 1, else if ..., but I'm bad at building complex if/else statements.

谢谢你

r if-statement multiple-conditions
1个回答
0
投票

创建一个

score
函数来计算分数。
rowSums
将分别添加正确答案和错误答案。错误答案的总和乘以
0.5
。然后将两个结果相加并返回给调用者。全部都在一行中。

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)

score <- function(x, pos = c("a", "b"), neg = c("c", "d")) {
  rowSums(x[pos]) - 0.5*rowSums(x[neg])
}
score(df)
#> [1] -0.5  0.5  1.5  0.5  1.0

创建于 2024-08-17,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.