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

R语言:如何按date-v1分组计算每组v2的均值?

按date-v1分组计算v2均值的解决方法

没问题!你已经掌握了用aggregate()按单个变量分组的思路,要实现同时按date和v1两个变量分组只需要小小调整参数就行,下面给你两种最常用的实现方式:

方法1:使用aggregate()的公式形式(最贴合你的输出需求)

这种写法直接用公式指定分组变量和待计算的变量,输出的列名完全匹配你想要的格式:

# 核心代码
aggregate(v2 ~ date + v1, data = df, FUN = mean)

用你的样本数据测试:

先构造示例数据框:

df <- data.frame(
  date = c(1991, 1991, 1991, 1991, 1992),
  v1 = c(1, 1, 2, 2, 1),
  v2 = c(2, 3, 1, 3, 1)
)

运行上面的代码后,输出结果就是:

date v1  v2
1 1991  1 2.5
2 1992  1 1.0
3 1991  2 2.0

方法2:使用aggregate()的列表分组形式

如果你习惯用by参数的写法,只需要在列表里传入两个分组变量即可,记得给变量命名让结果更清晰:

aggregate(df$v2, by = list(date = df$date, v1 = df$v1), FUN = mean)

这个写法的输出列名会是date、v1和x(x对应v2的均值),如果想把x改成v2,可以手动重命名:

result <- aggregate(df$v2, by = list(date = df$date, v1 = df$v1), FUN = mean)
colnames(result)[3] <- "v2"

额外推荐:tidyverse风格的写法(更直观)

如果你使用dplyr包,分组汇总的逻辑会更清晰易懂:

library(dplyr)

df %>% 
  group_by(date, v1) %>%  # 按date和v1分组
  summarise(v2 = mean(v2), .groups = "drop")  # 计算v2的均值并取消分组

运行后同样会得到你期望的输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:39:48