【发布时间】:2010-09-02 17:23:19
【问题描述】:
我在 R 中有一个 zoo 系列。我可以在 chron 或 POSIXct 索引之间进行选择。
如何聚合到 15 分钟,每 15 分钟取最后一个元素?
我知道如何每天汇总,写作 as.Date,但不知道如何每 15 分钟汇总一次。
谢谢。
【问题讨论】:
-
@user425895:帮我们大家一个忙,实际投票并接受答案。就目前而言,你不是一个好的 SO 公民。
我在 R 中有一个 zoo 系列。我可以在 chron 或 POSIXct 索引之间进行选择。
如何聚合到 15 分钟,每 15 分钟取最后一个元素?
我知道如何每天汇总,写作 as.Date,但不知道如何每 15 分钟汇总一次。
谢谢。
【问题讨论】:
根据您的需要,这里有几种可能性。两者都使用了chron 包中的trunc.times。 aggregate.zoo 解决方案采用每 15 分钟间隔内的最后一个值,并使用 15 分钟间隔开始时的时间对其进行标记,因此使用的时间为:00:00:00、00:15:00、00:30:00 和 00:45:00。 duplicated 解决方案使用相同的值,但使用在数据中实际找到的最后一次标记它们。在这两种情况下,我们只包括存在数据的区间。
在 (1) ?aggregate.zoo 中有更多 aggregate.zoo 的示例,(2) 所有三个动物园小插曲都有示例,以及 (3) 在 r-help 档案中搜索单词 aggregate.zoo 和 trunc找到更多的例子。
library(zoo)
library(chron)
z <- zoo(1:10, chron(1:10/(24*13)))
# 1. last value in each 15 minute interval
# using time at which interval begins
aggregate(z, trunc(time(z), "00:15:00"), tail, 1)
# 2. last value in each 15 minute interval
# time of last point in data within interval
z[!duplicated(trunc(time(z), "00:15:00"), fromLast = TRUE)]
【讨论】: