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

数据整理:基于另一列信息计算某列特定行的平均值

解决方案:按分组计算平均值并保留关联列信息

针对你的需求,我们可以通过分组聚合的方式实现,这里提供两种常用的R语言实现方案,分别适配不同的使用习惯:

方法一:使用dplyr包(推荐,语法更直观)

dplyr是tidyverse生态中处理数据的核心工具,分组聚合的逻辑清晰易懂:

# 若未安装dplyr,先执行install.packages("dplyr")
library(dplyr)

# 按c1和c2组合分组,计算c3的平均值
dfout <- dfin %>%
  group_by(c1, c2) %>%
  summarize(c3 = mean(c3), .groups = "drop")

# 查看结果
print(dfout)

运行后会得到和你定义的dfout完全一致的结果:

c1 c2 c3

1 a1 b1 1.5
2 a1 b2 3.5
3 a1 b3 5.5
4 a2 b4 7.5
5 a2 b5 9.5
6 a2 b6 11.5
7 a3 b7 13.5
8 a3 b8 15.5
9 a3 b9 17.5

方法二:使用基础R的aggregate()函数

如果不想加载额外包,基础R自带的aggregate()函数也能完成任务:

# 按c1+c2的组合分组,对c3列应用平均值计算
dfout <- aggregate(c3 ~ c1 + c2, data = dfin, FUN = mean)

# 查看结果
print(dfout)

这个方法的输出结果和上面完全相同,语法风格更贴近基础R的传统写法。

补充说明

从你的原始数据能看出,每个c2值都唯一对应一个c1值(比如b1仅属于a1),所以同时按c1和c2分组,既能保证聚合逻辑的正确性,又能完整保留我们需要的c1列信息。如果后续数据出现一个c2对应多个c1的情况,这个逻辑依然适用,会自动按c1+c2的组合维度计算平均值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 09:34:05