使用R语言计算data.frame的每日平均价格
按日期计算每日平均价格并新增列
以下是两种常用的实现方式,适配你的需求:
先构造示例数据(和你提供的结构一致):
df <- data.frame( date = as.POSIXct(c("2017-01-01 01:00:00", "2017-01-01 01:00:00", "2017-01-01 05:00:00", "2017-01-01 04:00:00", "2017-01-02 08:00:00", "2017-01-02 08:00:00", "2017-01-02 07:00:00")), price = c(10,10,25,30,10,30,20) )
方法一:Base R 原生实现
用ave()函数按日期分组计算均值,先提取纯日期用于分组:
# 提取日期部分(去除时分秒) df$day <- as.Date(df$date) # 新增avg_price列,按day分组计算price的平均值 df$avg_price <- ave(df$price, df$day, FUN = mean) # 可选:删除临时的day列 df$day <- NULL
方法二:dplyr 工具实现
如果习惯用tidyverse系列,分组+新增列的逻辑更直观:
library(dplyr) df <- df %>% # 按纯日期分组 group_by(day = as.Date(date)) %>% # 新增avg_price列,赋值为当日price的均值 mutate(avg_price = mean(price)) %>% # 取消分组(后续操作无需分组时建议执行) ungroup() %>% # 可选:删除临时的day列 select(-day)
运行后即可得到你示例中的结果,同一日期的所有行都会填充当日的平均价格。
内容的提问来源于stack exchange,提问作者NCall
相关产品推荐
相关产品推荐

