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

基于附加条件移除重复行:仅删除含NA的同id重复行

解决方案

使用dplyr包处理

library(dplyr)

myoutput <- myinput %>%
  group_by(id) %>%
  mutate(
    has_na = rowSums(is.na(.)) > 0,
    has_complete = any(!has_na)
  ) %>%
  filter(!has_complete | !has_na) %>%
  select(-has_na, -has_complete) %>%
  ungroup()

# 查看结果
myoutput

使用Base R处理

# 标记每行是否含NA
has_na <- rowSums(is.na(myinput)) > 0
# 标记每个id组是否存在无NA的完整行
has_complete <- ave(!has_na, myinput$id, FUN = any)
# 筛选符合要求的行
myoutput <- myinput[!has_complete | !has_na, ]

# 查看结果
myoutput

逻辑说明

  1. 标记行与组状态:先识别每行是否包含NA,再判断每个id分组内是否存在无NA的完整行。
  2. 筛选规则:
    • 若分组内没有完整行(如id=3),保留所有行;
    • 若分组内有完整行,仅保留无NA的行(自动删除同组内含NA的重复行,如id=1的第2行、id=2的第3行);
    • 分组内所有行都无NA的情况(如id=4),全部保留,符合你提出的需单独核查矛盾数据的要求。

输出结果与预期一致:

# A tibble: 5 × 3
     id  val1  val2
  <dbl> <dbl> <dbl>
1     1    10    10
2     2    10    10
3     3    20    NA
4     4    30    30
5     4    30    40

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:05:01