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

R语言如何基于日期范围对两个DataFrame实现关联匹配

问题原因

  • 缺少ID关联条件:原代码的JOIN没有限制两个表ID相等,会出现跨ID的错误匹配
  • 区间匹配逻辑写反:你需要的是OUT的完整区间落在HOSP的区间内,原代码的判断逻辑是HOSP的入院开始时间落在OUT的区间内,和需求完全相反

解决方案

方案1:修正sqldf语句

直接修正SQL的关联条件即可得到符合预期的结果:

library(sqldf)
RESULT <- sqldf("select HOSP.*, OUT.DT_START_OUT, OUT.DT_END_OUT 
                from HOSP
                left join OUT
                on HOSP.ID = OUT.ID 
                and OUT.DT_START_OUT >= HOSP.DT_START_HOSP 
                and OUT.DT_END_OUT <= HOSP.DT_END_HOSP")

方案2:tidyverse生态实现

如果你习惯用dplyr语法,可以用如下写法实现相同逻辑:

library(dplyr)
RESULT <- HOSP %>%
  left_join(OUT, by = "ID") %>%
  filter(
    (DT_START_OUT >= DT_START_HOSP & DT_END_OUT <= DT_END_HOSP) | is.na(DT_START_OUT)
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:27:04