R语言基于三列信息筛选数据:保留符合指定测试条件人员的全量记录
基础R实现(和你原有写法逻辑兼容,仅新增筛选条件)
直接在筛选符合要求的人员ID时,新增a测试的value判断即可:
data1 <- data[data$person %in% data[data$test == 'a' & data$value < 3, ]$person, ]
运行后得到的data1就完全符合你的预期结果。
dplyr实现(可读性更强,适合tidyverse技术栈)
用分组+存在性判断的逻辑,后续修改筛选规则时更易维护:
library(dplyr) data1 <- data %>% group_by(person) %>% filter(any(test == 'a' & value < 3)) %>% ungroup()
逻辑说明:按人员分组后,只要该人员的所有测试记录中存在「a测试且值小于3」的行,就保留该人员的全部记录。
内容的提问来源于stack exchange,提问作者Badboybørge
相关产品推荐
相关产品推荐

