【发布时间】:2020-09-18 07:37:07
【问题描述】:
我有一个矩阵,其中包含大量案例和问卷中的相应答案。下面的强简化示例 (raw_responses) 包含 5 个人对 5 个项目的答案。让我们假设这些是多项选择项,每个选项有 4 个可能的答案。如果该项目未处理,则此人收到代码 9。
raw_responses <- data.frame('id' = 1:10,
'item_1' = sample(c(1:4,9), 10, replace = TRUE),
'item_2' = sample(c(1:4,9), 10, replace = TRUE),
'item_3' = sample(c(1:4,9), 10, replace = TRUE),
'item_4' = sample(c(1:4,9), 10, replace = TRUE),
'item_5' = sample(c(1:4,9), 10, replace = TRUE))
正确答案存储在反映整个测试设计的单独表格中。下面又是一个强烈简化的变体(设计),只有项目名称和相应的正确答案。
design <- data.frame('item' = c('item_1','item_2','item_3','item_4','item_5'),
'key' = sample(1:4, 5, replace = TRUE))
最后,目标是一个带有得分答案的表格。正确答案用 1 编码,错误答案用 0 编码,“空”答案用 99 编码。这适用于下面的 for 循环。
scored_responses <- raw_responses
for(item in colnames(raw_responses)[2:6]) {
scored_responses[, item] <- ifelse(scored_responses[, item] == design[design$item == item, 'key'], 1,
ifelse(scored_responses[, item] == 9, 99, 0))
}
但是,我想知道这是否可以与 dplyr(包括 case_when)和可能发出咕噜声的更有效变体一起使用。特别是因为在较长的 dplyr 管道的帮助下清理了非常广泛的答案表,如果可以在其中建立评分将是一个优势。
提前感谢您提供的所有想法和提示。
【问题讨论】: