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

R语言基于双因子对数据框列求平均值的实现方法咨询

R实现多模型多轮运行结果聚合方案

你需要先从pred.name中提取模型标识,再按「变量名(name) + 变量取值(expl.val) + 模型标识」三个维度分组求均值即可,无需单独拆分RUN字段就能完成需求。


依赖包安装与加载

优先使用tidyverse生态的函数实现,代码更简洁易读:

# 首次使用先安装
install.packages("tidyverse")
# 加载包
library(tidyverse)

核心处理代码

假设你的原始数据框名为df,直接运行以下代码即可得到符合要求的聚合结果:

df_agg <- df %>%
  # 提取模型标识:自动匹配pred.name中MODEL+数字的部分
  mutate(model_id = str_extract(pred.name, "MODEL\\d+")) %>%
  # 按三个维度分组:变量名、变量取值、模型ID
  group_by(name, expl.val, model_id) %>%
  # 计算同一分组下3次运行的预测值均值
  summarise(pred.val = mean(pred.val, na.rm = TRUE), .groups = "drop") %>%
  # 拼接成要求的pred.name格式
  mutate(pred.name = paste0("RUNavg_", model_id)) %>%
  # 调整为你需要的列顺序
  select(name, expl.val, pred.name, pred.val)

如果偏好base R实现,可使用以下代码:

# 提取模型标识
df$model_id <- gsub(".*_", "", df$pred.name)
# 分组求均值
df_agg <- aggregate(pred.val ~ name + expl.val + model_id, data = df, FUN = mean, na.rm = TRUE)
# 拼接pred.name字段
df_agg$pred.name <- paste0("RUNavg_", df_agg$model_id)
# 调整列顺序
df_agg <- df_agg[, c("name", "expl.val", "pred.name", "pred.val")]

处理完成的df_agg可直接用于绘制响应曲线,每个变量每个取值下每个模型仅对应1条聚合后的结果,不会出现曲线混乱的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:06:04