You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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()

代码说明

  1. 分组判断District条件:group_by(District)后,all(c("Monitor", "Never") %in% Status)确保当前District同时存在Monitor和Never两种状态;any(Answer == "No")确保该District内至少有一条Answer为No的记录,两者结合筛选出A、D两个符合要求的District。
  2. 筛选目标行:在筛选后的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 15:38:26