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

如何基于两列日期顺序条件删除R dataframe中的指定行

实现方案

方法1:基础R实现

# 提取每个var1对应的最早检查日期
inspec_min_date <- aggregate(date ~ var1, data = inspec, FUN = min)
# 关联test和检查日期
test_merged <- merge(test, inspec_min_date, by = "var1", all.x = TRUE, suffixes = c("", "_inspec"))
# 筛选符合要求的行:无对应检查记录 或 日期早于最早检查日期
test_res <- test_merged[is.na(test_merged$date_inspec) | test_merged$date < test_merged$date_inspec, 
                        names(test)]

方法2:dplyr实现(代码更简洁)

library(dplyr)

# 提取每个var1对应的最早检查日期
inspec_min <- inspec %>%
  group_by(var1) %>%
  summarise(inspec_date = min(date))

test_res <- test %>%
  left_join(inspec_min, by = "var1") %>%
  # 保留无检查记录 或 日期早于检查日期的行
  filter(is.na(inspec_date) | date < inspec_date) %>%
  select(-inspec_date)

补充说明

  • 如果你需要将等于检查日期的行也删除,把上述代码中的判断条件date < inspec_date改为date <= inspec_date即可
  • 如果你的需求是删除晚于inspec中该var1所有检查日期的行,只需要将聚合函数从min改为max即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:06:04