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

R dplyr按id分组筛选满足a=1行数≥2且a有多个取值的组

原有代码缺少对「分组内a列等于1的行数」的判断逻辑,同时添加了冗余的行级筛选条件,才会导致不符合要求的id=1分组被保留。

你可以直接用以下代码实现需求:

library(dplyr)
dat1 <- dat %>%
  group_by(id) %>%
  # 两个条件直接对应你的需求,同时满足才会保留整个分组
  filter(
    sum(a == 1) >= 2, # 分组内a=1的行数至少为2
    n_distinct(a) >= 2 # 分组内a的不同取值至少有2种
  ) %>%
  ungroup() # 后续不需要分组操作的话可主动取消分组

代码逻辑说明:

  • sum(a == 1) >= 2:按id分组后,统计每个分组内a列取值为1的行数,仅保留满足≥2要求的分组
  • n_distinct(a) >= 2:统计每个分组内a列的唯一值数量,仅保留满足≥2要求的分组

运行上述代码输出的结果和你给出的期望结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:57:03