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

R新手求助:按日期计算价格加权平均值的实现问题

按日期计算价格加权平均值的解决方法

你的问题出在aggregate调用weighted.mean时没传入权重参数——weighted.mean需要两个核心参数:待加权的数值向量,以及对应的权重向量,你只传了价格,函数默认权重全为1,自然算出普通平均值。下面给两种可行的解决方法:

方法一:Base R(无需额外包)

通过aggregate同时传入价格和数量列,再用自定义函数计算加权平均:

# 计算加权平均并整理结果
price_weighted <- aggregate(cbind(price, quantity) ~ date, data = df, 
                            FUN = function(x) weighted.mean(x[,1], x[,2]))
# 重命名结果列并移除多余列
colnames(price_weighted)[2] <- "price_weighted"
price_weighted$quantity <- NULL

方法二:tidyverse(更直观易读)

用dplyr包的分组聚合语法,新手更容易理解和扩展:

# 首次使用需安装dplyr
# install.packages("dplyr")
library(dplyr)

price_weighted_df <- df %>%
  group_by(date) %>%  # 按日期分组
  summarize(price_weighted = weighted.mean(price, quantity)) %>%  # 计算每组加权平均
  ungroup()  # 取消分组状态(避免后续操作受分组影响)

两种方法都能得到你预期的结果:

dateprice_weighted
01/09/212.00
01/16/212.00
01/23/213.00
01/30/212.95

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 00:52:36