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

在R中批量计算指定多列的列均值并生成新data.frame

批量计算指定列均值并生成新数据框

原始数据

首先构造示例数据:

round1 <- c(1, 5, 3, 6)
round2 <- c(4, 5, 4, 6)
round3 <- c(1, 9, 8, 2)
round4 <- c(4, 8, 5, 3)
df = data.frame(round1, round2, round3, round4)

对应的表格:

round1round2round3round4
1414
5598
3485
6623

需求说明

每一列对应游戏不同回合的得分,需要绘制各回合所有玩家的平均分随时间变化的图表。由于列数多达153列,需要批量对指定列计算列均值,生成新的data.frame,避免手动逐个处理。

解决方案

方法1:Base R 实现

先定义需要计算的目标列列表,再用colMeans直接批量计算列均值,最后转换为data.frame:

# 指定目标列
target_cols <- c("round1", "round3")
# 计算指定列的均值
col_means <- colMeans(df[target_cols])
# 生成结果数据框
result_df <- data.frame(Sums = col_means)

运行后得到的结果:

Sums
3.75
5.00

如果需要处理所有列,直接执行colMeans(df)即可,再转成data.frame。

方法2:dplyr 包实现(适配tidyverse工作流)

用dplyr的管道语法更灵活,还能保留回合名称方便后续绘图:

library(dplyr)
library(tidyr)

target_cols <- c("round1", "round3")
result_df <- df %>%
  select(all_of(target_cols)) %>% # 筛选目标列
  summarise(across(everything(), mean)) %>% # 计算每列均值
  pivot_longer(cols = everything(), names_to = "Round", values_to = "Sums") # 转换为长格式

# 如果不需要保留回合名称,可添加以下代码:
# result_df <- result_df %>% select(Sums)

生成的长格式数据(含回合名称)更适合后续绘制折线图,直接关联回合和平均分。

内容的提问来源于stack exchange,提问作者grace.cutler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:47:28