r - 汇总日期并计算平均值

标签 r date aggregate

我有一个数据框,其中一列中有很长的日期列表,另一列中有很长的值,如下所示:

set.seed(1234)
df <- data.frame(date= as.Date(c('2010-09-05', '2011-09-06', '2010-09-13', 
                                 '2011-09-14', '2010-09-23', '2011-09-24',
                                 '2010-10-05', '2011-10-06', '2010-10-13', 
                                 '2011-10-14', '2010-10-23', '2011-10-24')),
                 value= rnorm(12))

我需要计算每个月每 10 天的平均值,但不考虑年份,如下所示:
dfNeeded <- data.frame(datePeriod=c('period.Sept0.10', 'period.Sept11.20', 'period.Sept21.30',
                                    'period.Oct0.10', 'period.Oct11.20', 'period.Oct21.31'),
                       meanValue=c(mean(df$value[c(1,2)]), 
                                   mean(df$value[c(3,4)]),
                                   mean(df$value[c(5,6)]),
                                   mean(df$value[c(7,8)]), 
                                   mean(df$value[c(9,10)]),
                                   mean(df$value[c(11,12)])))

有没有一种快速的方法来做到这一点?

最佳答案

这是一种方法,它使用 lubridate用于月和日提取的包,但您可以使用基本 R 日期函数来完成:

library(lubridate)
df$period <- paste(month(df$date),cut(day(df$date),breaks=c(0,10,20,31)),sep="-")
aggregate(df$value, list(period=df$period), mean)

这使 :
      period          x
1  10-(0,10] -0.5606859
2 10-(10,20] -0.7272449
3 10-(20,31] -0.7377896
4   9-(0,10] -0.4648183
5  9-(10,20] -0.6306283
6  9-(20,31]  0.4675903

关于r - 汇总日期并计算平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15316751/

相关文章:

java - 如何在 Oracle 数据库中使用 JDBC 中的日期和时间

r - 我怎样才能使 xtable 与 aggregate(..., FUN = paste) 一起工作?

python - Pandas Multiindex Groupby 聚合列与另一列的值

r Shiny 的条件显示

r - 使用shinyalert确认数据更新

R 启动时安装包时出错

django:基于时间范围的聚合查询

c++ - 在 C++ 函数环境中删除输入 R 对象

java - 计算两个日期之间的天数错误输出

Linux命令——给文件名添加时间元素