我是 R 新手,在按日期聚合时遇到一些困难。我有每个日期包含多个价格和数量条目的时间序列数据。实际数据更复杂,但看起来像这样:
price<-c(1.50,3,1.50,3,3,2.90,3)
quantity<-c(10,5,10,5,5,5,5)
date<-c('01/09/21','01/09/21','01/16/21','01/16/21','01/23/21','01/30/21','01/30/21')
df<-data.frame(date,price,quantity)
日期 | 价格 | 数量 |
---|---|---|
01/09/21 | 1.5 | 10 |
01/09/21 | 3 | 5 |
21/16/01 | 1.5 | 10 |
21/16/01 | 3 | 5 |
21/01/23 | 3 | 5 |
01/30/21 | 2.9 | 5 |
01/30/21 | 3 | 5 |
我想创建一个新的数据框,其中仅包含四个单独的日期和每个日期的单个价格值。为此,我尝试计算每个日期的加权平均价格,类似于下面的示例:
日期 | 价格加权 |
---|---|
01/09/21 | 2 |
21/16/01 | 2 |
21/01/23 | 3 |
01/30/21 | 2.95 |
我尝试过使用
price_weighted<-aggregate(price~date,df,weighted.mean)
,它返回的结果与我想要的类似,但由于某种原因,它计算的是平均价格而不是加权平均值。任何建议将不胜感激!
您可以使用 dplyr 来完成此操作,方法是将价格乘以数量除以当天的总数量。
library(dplyr)
price<-c(1.50,3,1.50,3,3,2.90,3)
quantity<-c(10,5,10,5,5,5,5)
date<-c('01/09/21','01/09/21','01/16/21','01/16/21','01/23/21','01/30/21','01/30/21')
df<-data.frame(date,price,quantity)
df %>%
group_by(date) %>%
summarise(wt_mean = sum(price * quantity/sum(quantity)))
#> # A tibble: 4 × 2
#> date wt_mean
#> <chr> <dbl>
#> 1 01/09/21 2
#> 2 01/16/21 2
#> 3 01/23/21 3
#> 4 01/30/21 2.95
创建于 2024-04-13,使用 reprex v2.0.2