回答第 2 部分:
如果我想汇总 5 分钟的平均值怎么办?
正如@eddit 在上面的评论中已经提到的:
df <- read.table(header=TRUE, sep=",", stringsAsFactors=FALSE, text="
timestamp, value
2012-04-09 05:03:00,2
2012-04-09 05:04:00,4
2012-04-09 05:05:00,5
2012-04-09 05:06:00,0
2012-04-09 05:07:00,0
2012-04-09 05:08:00,3
2012-04-09 05:09:00,0
2012-04-09 05:10:00,1")
X2 <- xts(df$value, as.POSIXct(df$timestamp))
X2.5min <- period.apply(X2, endpoints(X2, "minutes", 5), mean)
我得到:05:04:00 - 4;05:09:00 - 5,... 但也许可以将第一个值设置为 05:00:00 并继续 05:05:00 可能会更容易,如果我稍后合并文件以具有相同的开始和时间步长。
的确:
> X2.5min
[,1]
2012-04-09 05:04:00 3.0
2012-04-09 05:09:00 1.6
2012-04-09 05:10:00 1.0
Cross Validated的Darren Cook遇到了同样的问题并写了函数align.time.down
:
align.time.down=function(x,n){index(x)=index(x)-n;align.time(x,n)}
这可以用来调整时间:
X2.5mindown <- align.time.down(X2.5min, 5 * 60)
X2.5mindown
[,1]
2012-04-09 05:00:00 3.0
2012-04-09 05:05:00 1.6
2012-04-09 05:10:00 1.0