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

如何在R中按多条件识别并去除重复数据

在R中处理含NA的重复数据:保留最新日期+人工核对NA组

原始数据

先准备示例数据并转换日期格式:

df <- data.frame(id = c("a", "a", "b","b", "c","c"),
                 date = c("2023-05-16", "2023-08-21", "2023-06-05", NA, "2023-05-07", "2023-05-20"))

library(lubridate)
df$date <- ymd(df$date)

转换后的数据如下:

id       date
1  a 2023-05-16
2  a 2023-08-21
3  b 2023-06-05
4  b       <NA>
5  c 2023-05-07
6  c 2023-05-20

步骤1:提取需人工核对的重复组

提取所有id组内存在NA日期的完整组,用于人工判断保留行:

# 找出所有包含NA的id
na_ids <- unique(df$id[is.na(df$date)])
# 提取这些id的所有行
manual_check_df <- df[df$id %in% na_ids, ]

得到的人工核对数据集:

id       date
1  b 2023-06-05
2  b       <NA>

步骤2:自动处理无NA的重复组,保留最新日期

筛选出无NA日期的id组,按id分组后保留每个组内日期最新的记录:

# 筛选出不在na_ids里的行
auto_process_df <- df[!df$id %in% na_ids, ]
# 按id分组,保留每个组中date最大的行
library(dplyr)
final_auto_df <- auto_process_df %>%
  group_by(id) %>%
  filter(date == max(date)) %>%
  ungroup()

自动处理后的结果:

id       date
1  a 2023-08-21
2  c 2023-05-20

后续操作

待人工完成manual_check_df的行选择后,可将处理后的结果与final_auto_df合并,得到最终的去重数据集:

# 假设人工处理后得到manual_final_df,合并数据
final_df <- bind_rows(final_auto_df, manual_final_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:24:55