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

如何用dplyr筛选包含指定值的id对应的所有数据?

用dplyr实现按组筛选(组内任意值匹配则保留整组)

你可以通过dplyr的分组+筛选组合来实现需求,核心是用group_by()按id分组,再用any()判断组内是否存在符合条件的value,最后筛选出满足条件的组:

library(dplyr)

# 示例数据
id <- c(1,1,1,1,1,2,2,2,2,2)
value <- c(0,0,0,0,1,0,0,0,0,0)
sample <- data.frame(id, value)

# 执行筛选
result <- sample %>%
  group_by(id) %>%
  filter(any(value == 1)) %>%  # 判断组内是否有任意value等于1
  ungroup()  # 取消分组(可选,根据后续操作需求)

# 查看结果
print(result)

代码解释:

  • group_by(id):将数据按id字段分组,确保后续操作针对每个独立的id组执行
  • filter(any(value == 1)):对每个分组,检查是否存在至少一个value等于1,满足该条件的分组会被完整保留所有行
  • ungroup():如果后续不需要保持分组状态,用这个函数取消分组,恢复为普通数据框结构

如果需要适配任意匹配值x,只需把代码中的1替换为变量即可:

x <- 1  # 可替换为任意目标值
result <- sample %>%
  group_by(id) %>%
  filter(any(value == x)) %>%
  ungroup()

内容的提问来源于stack exchange,提问作者Ludwig Gershwin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:57:08