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

如何在R语言中基于另一变量创建新变量:按v1分组求v2均值

按分组计算均值并添加到原数据框的R实现

原始数据

df <- data.frame(id=c(1,2,3,4,5),
                 v1=c(2020,2020,2021,2021,2022),
                 v2=c(12,5,66,17,17))

解决方案

方法1:Base R 原生实现

使用ave()函数可以快速按分组计算均值,并将结果匹配到原数据的每一行:

df$avg_by_yr <- ave(df$v2, df$v1, FUN = mean)

运行后查看结果:

print(df)
#   id   v1 v2 avg_by_yr
# 1  1 2020 12       8.5
# 2  2 2020  5       8.5
# 3  3 2021 66      41.5
# 4  4 2021 17      41.5
# 5  5 2022 17      17.0

方法2:dplyr 包实现(tidyverse 风格)

如果习惯使用tidyverse生态的语法,可通过分组后添加新列的方式实现:

  1. 先加载dplyr包:
library(dplyr)
  1. 执行分组计算:
df <- df %>%
  group_by(v1) %>%
  mutate(avg_by_yr = mean(v2)) %>%
  ungroup()

此方法同样能得到目标格式的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:30:43