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

如何在R中按匹配的日期列从另一数据框提取对应列的值

R语言按日期匹配填充数据框的实现方法

需求说明

现有两个结构相近的数据框df1、df2,均包含日期列a、数值列vv和tv,需保留df1的全部日期范围,将df2中同日期对应的vv、tv值填充到df1对应行,无匹配位置保留NA。

示例测试数据

df1 <- data.frame(a= seq.Date(from = as.Date("2021-08-14"), to = as.Date("2021-08-20"), by = 1),
                  vv= NA,
                  tv= NA)

df2 <- data.frame(a=as.Date(c("2021-08-14","2021-08-15","2021-08-22",
                              "2021-08-16","2021-08-17","2021-08-25","2021-08-26")),
                  vv=c(12,11,13,14,15,16,10),
                  tv= c(1,2,3,4,5,6,7))

实现方法

方法1:基础R原生实现

使用merge()函数做左连接,保留df1的所有行,自动匹配填充值:

df3 <- merge(
  x = df1[, "a", drop = FALSE],
  y = df2,
  by = "a",
  all.x = TRUE
)

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

使用left_join()左连接函数实现:

library(dplyr)

df3 <- df1 %>% 
  select(a) %>% 
  left_join(df2, by = "a")

输出结果验证

最终得到的df3和预期一致,保留df1的全部日期,匹配到的vv、tv填充对应值,无匹配项为NA:

> df3
           a vv tv
1 2021-08-14 12  1
2 2021-08-15 11  2
3 2021-08-16 14  4
4 2021-08-17 15  5
5 2021-08-18 NA NA
6 2021-08-19 NA NA
7 2021-08-20 NA NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:00:04