如何在R中实现嵌套筛选?基于dplyr的多条件数据过滤
解决方案
你的需求需要分两步筛选:先确定符合条件的District,再筛选目标行。原代码的问题在于没有先判断District是否同时包含Monitor和Never类型,直接筛选行导致结果不符合预期。
正确代码
library(dplyr) DATA %>% group_by(District) %>% # 第一步:筛选出同时包含Monitor和Never、且存在Answer为No的District filter(all(c("Monitor", "Never") %in% Status) & any(Answer == "No")) %>% # 第二步:在符合条件的District中,保留目标行 filter(Status %in% c("Monitor", "Never") & Answer == "No") %>% ungroup()
代码说明
- 分组判断District条件:
group_by(District)后,all(c("Monitor", "Never") %in% Status)确保当前District同时存在Monitor和Never两种状态;any(Answer == "No")确保该District内至少有一条Answer为No的记录,两者结合筛选出A、D两个符合要求的District。 - 筛选目标行:在筛选后的District组内,进一步保留
Status为Monitor/Never且Answer为No的行,最终得到你需要的第1、3、10和最后一行数据。
运行结果
# A tibble: 4 × 3 District Status Answer <chr> <chr> <chr> 1 A Monitor No 2 A Never No 3 D Never No 4 D Monitor No
内容的提问来源于stack exchange,提问作者Simon Harmel
相关产品推荐
相关产品推荐

