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

R语言按条件删除冗余行:相同ID和type下保留含有效值的记录

dplyr 解决方案

你可以通过分组条件筛选实现需求,核心逻辑是:对每个ID下的同type组,若组内存在有效值标记yes_no = y,则删除同组内标记为n的无效行;若组内全为n则全部保留。

实现代码

首先加载依赖包:

library(dplyr)

数据清洗代码:

df2 <- df %>%
  # 按ID、type分组,适配多ID、多type的通用场景
  group_by(ID, type) %>%
  # 分组条件筛选:组内有y则仅保留y行,无y则保留所有行
  filter(if(any(yes_no == "y")) yes_no == "y" else TRUE) %>%
  # 解除分组,避免影响后续数据操作
  ungroup()

效果验证

用你提供的示例数据运行上述代码,输出结果和你给出的期望输出完全一致:

> print(df2)
# A tibble: 6 × 4
  ID    type  yes_no value
  <chr> <chr> <chr>  <chr>
1 1     1     n      NA   
2 1     2     n      NA   
3 1     3     y      2    
4 1     4     y      5    
5 1     4     y      6    
6 1     5     n      NA   

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:21:02