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

如何基于两个R数据框的同名列生成含均值的结果表格?

解决R数据框同名列逐行均值计算问题

步骤1:合并数据框

先以CodeNidif和Altitude为匹配键,合并两个数据框:

library(dplyr)

# 合并数据框,给同名数值列加后缀区分
combined_df <- left_join(mint_04_export, maxt_04_export, 
                         by = c("CodeNidif", "Altitude"),
                         suffix = c("_min", "_max"))

步骤2:定位需计算均值的列对

提取两个原数据框中除键列外的列名,筛选出同名的数值列:

# 排除键列,获取各自的数值列名
mint_cols <- setdiff(names(mint_04_export), c("CodeNidif", "Altitude"))
maxt_cols <- setdiff(names(maxt_04_export), c("CodeNidif", "Altitude"))

# 取两个列表的交集,得到需要计算均值的列名
common_cols <- intersect(mint_cols, maxt_cols)

步骤3:批量计算逐行均值

遍历每一组同名列,计算对应行的均值并生成新列:

for(col in common_cols) {
  combined_df[[col]] <- rowMeans(combined_df[, paste0(col, c("_min", "_max"))], na.rm = TRUE)
}

步骤4:保留目标列

筛选出最终需要的列:

final_df <- combined_df[, c("CodeNidif", "Altitude", common_cols)]

简洁版dplyr管道写法

如果习惯用管道风格,可借助across批量处理:

final_df <- mint_04_export %>%
  left_join(maxt_04_export, by = c("CodeNidif", "Altitude"), suffix = c("_min", "_max")) %>%
  mutate(across(all_of(common_cols), 
                ~ rowMeans(select(cur_data(), paste0(.x, c("_min", "_max"))), na.rm = TRUE))) %>%
  select(CodeNidif, Altitude, all_of(common_cols))

提示:如果数据存在NA值,na.rm = TRUE可避免结果出现NA,可根据实际需求调整该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:50:25