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

R中按Date合并同列名同维度数据框并对匹配列求均值的实现方法

R实现多个同结构数据框按日期合并取均值

基于dplyr + purrr的方案(优先推荐)

该方案逻辑清晰、可读性强,也适配批量处理大量数据框的场景:

# 加载依赖包
library(dplyr)
library(purrr)

# 示例输入数据
df1 <- data.frame(Date=c("2019-01-01","2019-01-02","2019-01-03"),A=c(3,2,1),B=c(2,2,2),C=c(1,3,3))
df2 <- data.frame(Date=c("2019-01-01","2019-01-02","2019-01-03"),A=c(1,2,3),B=c(4,4,4),C=c(3,3,1))
df3 <- data.frame(Date=c("2019-01-01","2019-01-02","2019-01-03"),A=c(5,2,3),B=c(4,5,4),C=c(3,3,1))

# 合并计算逻辑
df_list <- list(df1, df2, df3) # 所有待合并数据框放入列表
df4 <- df_list %>%
  list_rbind() %>% # 纵向拼接所有数据框
  group_by(Date) %>% # 按日期字段分组
  summarise(across(where(is.numeric), ~round(mean(.), 1))) # 对所有数值列计算均值,保留1位小数

base R实现方案

无需加载第三方包,适合轻量使用场景:

# 示例输入数据和上文一致
df1 <- data.frame(Date=c("2019-01-01","2019-01-02","2019-01-03"),A=c(3,2,1),B=c(2,2,2),C=c(1,3,3))
df2 <- data.frame(Date=c("2019-01-01","2019-01-02","2019-01-03"),A=c(1,2,3),B=c(4,4,4),C=c(3,3,1))
df3 <- data.frame(Date=c("2019-01-01","2019-01-02","2019-01-03"),A=c(5,2,3),B=c(4,5,4),C=c(3,3,1))

# 合并计算逻辑
all_df <- rbind(df1, df2, df3) # 纵向拼接所有数据框
df4 <- aggregate(. ~ Date, data = all_df, FUN = function(x) round(mean(x), 1))

如果不需要保留固定小数位数,直接去掉代码中的round()函数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 18:54:04