r语言 - 计算 2 小时数据平均值



我有一年的流量数据。我想获取数据的 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 小时的时间戳不一致!

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

# 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 小时间隔,并使用它们来计算每个间隔的均值。

最新更新