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

如何按日期合并行数不同的DataFrame列表?R语言解决方案

R合并含日期的DataFrame列表:补全缺失日期为NA

你可以通过**左连接(Left Join)**的方式,以列表中第一个完整日期的DataFrame为基础,依次和后续的子集合并,缺失日期对应的观测值会自动填充为NA。下面提供两种实现方式:

先整理示例数据(给列名重命名,方便后续操作)

首先给原始数据和子集的日期列统一命名,并给每个子集的观测列加上标识:

start_date <- as.Date("2017/01/01")
# 完整日期表:指定列名为date
original <- data.frame(date = seq(start_date, by = "day", length.out = 365))

set.seed(5)
sub1 <- original[-sample(1:365, 100, replace=FALSE),]
# 给子集的观测列命名为obs1
colnames(sub1) <- c("date", "obs1")

set.seed(4)
sub2 <- original[-sample(1:365, 30, replace=FALSE),]
# 给子集的观测列命名为obs2
colnames(sub2) <- c("date", "obs2")

# 构造目标列表
df_list <- list(original, sub1, sub2)

方法1:使用dplyr + purrr(简洁高效)

利用reduce函数依次对列表中的DataFrame做左连接:

library(dplyr)
library(purrr)

# 以完整日期表为基础,合并所有子集
merged_df <- df_list %>%
  reduce(left_join, by = "date")

方法2:Base R原生实现

通过循环逐个合并,无需额外加载包:

# 初始化合并结果为完整日期表
merged_df <- df_list[[1]]

# 遍历列表中剩余的子集,逐个左连接
for (subset_df in df_list[-1]) {
  merged_df <- merge(merged_df, subset_df, by = "date", all.x = TRUE)
}

验证结果

查看合并后的前几行数据,缺失的观测值会自动填充为NA:

head(merged_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:55:16