计算2小时平均数据

时间:2015-01-29 21:16:59

标签: r datetime

我有一年的流量数据。我希望获得2小时的数据平均值,并制作一个时间序列,记录两个小时的平均流量以及时间戳。

数据如下所示:

2005-01-01 00:00:00  18
2005-01-01 00:15:00  18
2005-01-01 00:30:00  18
2005-01-01 00:45:00  18
2005-01-01 01:00:00  18
2005-01-01 01:15:00  18
2005-01-01 01:30:00  18
2005-01-01 01:45:00  19

所以最后我想要一些看起来像:

2005-01-01 00:00:00 18.125

这就是我现在正在做的事情:

for (i in seq(1,length(streamflow),8)){
  streamflow2hr[i] <- mean(streamflow[i:i+7])
}
valid2hr <- complete.cases(streamflow2hr)
validIndex <- which(valid2hr,arr.ind = TRUE)
streamflow2hrvalid <- streamflow2hr[validIndex]
streamflow2hrvalidTime <- streamflowDateTime[validIndex]
data2hr <- data.frame(streamflow2hrvalidTime,streamflow2hrvalid)
names(data2hr) <- c("DateTime","Flow")

但由于我使用相对位置,因此与2小时时间戳不一致!

1 个答案:

答案 0 :(得分:0)

您可以根据需要调整此代码:

# Generate a sample dataset
set.seed(1)
z <- as.POSIXct("2015-01-31 13:00:00") + 900*0:23
d <- data.frame(t=z,v=sample(length(z)))

d$cut <- cut(d$t,breaks="2 hours")
aggregate(v~cut,d,mean)
#                  cut      v
#1 2015-01-31 13:00:00 12.875
#2 2015-01-31 15:00:00 12.125
#3 2015-01-31 17:00:00 12.500

此解决方案不依赖于时间戳之间的15分钟间隔。相反,它将时间范围分为2小时间隔,并使用它们来计算每间隔时间。