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

按ID、Group分组后,保留Col3=2的行(无则保留全部行)

解决方案:按(ID, Group)分组后保留指定行

原始数据集

df <- data.frame(
  ID = c(1,1,2,2,3,3,4,4,5,5),
  Group = c("z1","z1","z2","z2","z1","z1","z3","z3","x2","x2"),
  Value = c(1.29, 0.81, 2.89, 1.53, 0.13, 0.97, 10.75, 8.13, 0.45, 1.43),
  Col3 = c(1,1,1,2,3,3,3,2,1,3)
)

需求说明

按ID和Group分组后:

  • 若组内存在Col3=2的行,仅保留该行,排除组内其他行
  • 若组内无Col3=2的行,保留组内所有行

代码实现(使用dplyr)

library(dplyr)

result_df <- df %>%
  group_by(ID, Group) %>%
  filter(ifelse(any(Col3 == 2), Col3 == 2, TRUE)) %>%
  ungroup()

print(result_df)

代码逻辑解释

  1. group_by(ID, Group):以ID和Group为分组依据
  2. filter(...):
    • 用any(Col3 == 2)判断当前组是否存在目标行
    • 如果存在,筛选出Col3=2的行;如果不存在,保留组内全部行
  3. ungroup():取消分组,恢复为常规数据框结构

预期输出

ID Group Value Col3
1  1    z1  1.29    1
2  1    z1  0.81    1
3  2    z2  1.53    2
4  3    z1  0.13    3
5  3    z1  0.97    3
6  4    z3  8.13    2
7  5    x2  0.45    1
8  5    x2  1.43    3

内容的提问来源于stack exchange,提问作者Ahir Bhairav Orai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:12:43