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

R语言按ID与日期区间条件合并数据集并过滤冗余行实现

实现代码

你只需要在原有代码的基础上追加分组过滤逻辑即可,完整代码如下:

# 需提前加载依赖包
library(tidyverse)
library(lubridate)

left_join(dat1, dat2, by = "ID") %>% 
  mutate(result = ifelse(date_mid %within% interval(date_begin, date_end), result, NA_character_)) %>%
  # 按dat1的每一行唯一标识分组(同一ID的不同时间区间分开处理)
  group_by(ID, date_begin, date_end) %>%
  # 分组过滤规则:组内有有效结果则只保留有效行,无有效结果则全部保留
  filter(if (any(!is.na(result))) !is.na(result) else TRUE) %>%
  ungroup()

逻辑说明

  • 我们以ID+date_begin+date_end作为分组键,对应dat1中的每一行原始记录,避免同一ID不同时间区间的判断互相干扰
  • 分组后先判断该组内是否存在非NA的result值:
    • 如果存在,仅保留组内result非NA的行,删除冗余的NA行
    • 如果不存在(组内全为NA),则保留该组所有行,符合预期需求
      运行上述代码即可得到你给出的12行预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:54:02