Date Value1
2013-07-03 16:05:00 1178
2013-07-03 16:10:00 1200
2013-07-03 16:15:00 1180
2013-07-03 16:20:00 1175
2013-07-03 16:25:00 1205
2013-07-03 16:30:00 1170
.....
换句话说,我每五分钟(整整一个月)测量一次Value1。我尝试过的(没有结果)是创建一个包含两列的新df,其中Value1的每小时均值。结果应该是:
Date Value1
2013-07-03 16:00:00 1180
2013-07-03 17:00:00 1210
.....
其中1178是16:00到17:00期间的Value1的平均值,因此一个.. 我将列日期格式化为日期
df$Date<-as.POSIXct(df$Date, "%Y/%m/%d %H:%M:%S", tz = "")
有快速的方法吗?
我也尝试使用动物园包:
zoo_df<-read.zoo(df, header=T, tz="GMT")
aggregate(zoo_df, as.Date, mean)
显然,函数as.Date完全适用于日常均值,是不是有类似的方法来做同样的小时均值?
答案 0 :(得分:4)
使用时间序列包:
DF <- data.frame(Date=seq(from=as.POSIXct("2013-07-03 16:05:00", tz="GMT"),
to=as.POSIXct("2013-07-04 16:05:00", tz="GMT"),
by="5 min"),
Value1=1:289)
library(xts)
myTS <- zoo(DF[,2], DF[,1])
ep <- endpoints(myTS, "hours")
period.apply(myTS, INDEX=ep, FUN=mean)