使用R语言验证数据集各参与者的测试数量与指定测试项完整性
解决方案
修正后的代码实现
# 指定需要验证的Test_ID集合 test_ID <- c("2125", "2167", "2145", "2189", "2143") # 按参与者分组执行两项检查 check_result <- dat %>% group_by(Participant_ID) %>% # 修正拼写错误:原代码的Paticipant_ID少了字母r summarize( # 检查1:测试记录数是否≥35 record_count_ok = n() >= 35, # 检查2:是否包含所有指定的Test_ID test_id_set_ok = all(test_ID %in% Test_ID), # 可选:生成综合检查结果(两项都达标则为TRUE) overall_ok = record_count_ok & test_id_set_ok )
代码说明
- 分组处理:通过
group_by(Participant_ID)确保每个参与者的记录单独处理 - 记录数检查:
n()统计每组的记录条数,直接判断是否满足≥35的要求 - Test_ID集合验证:
all(test_ID %in% Test_ID)确保指定集合中的每一个Test_ID都存在于当前参与者的测试记录中,避免遗漏任何一项 - 综合结果:
overall_ok字段直接返回两项检查都通过的最终判断
原代码问题说明
- 拼写错误:
Paticipant_ID应为Participant_ID,导致分组逻辑失效 - 分组后未使用
summarize/mutate处理组内数据,原代码的test_ID %in% as.matrix(dat$Test_ID)是全局检查,而非按参与者分组检查 - 缺少
all()函数,无法验证指定Test_ID集合的完整性,仅会返回单个布尔值而非每组的检查结果 as.matrix属于冗余操作,直接使用Test_ID列即可完成检查
内容的提问来源于stack exchange,提问作者Bubbles
相关产品推荐
相关产品推荐

