2010-09-02 119 views
1

我在R有一个动物园系列。我可以选择chron或POSIXct索引。在R中15分钟时间聚合

我该如何聚合到15分钟,每15分钟取最后一个元素?

我知道如何每日汇总,写作日期,但不知道如何汇总每15分钟。

谢谢。

+1

@ user425895:请大家帮忙,实际投票并接受答案。就目前而言,你并不是一个好的SO公民。 – Shane 2010-09-03 20:04:12

回答

1

这取决于你想要的东西有几种可能性。两者都使用chron包中的trunc.timesaggregate.zoo解决方案采用每个15分钟间隔内的最后一个值,并使用15分钟间隔开始时的时间对其进行标记,因此使用的时间为:00:00:00,00:15:00,00:30:0000:45:00duplicated解决方案使用相同的值,但使用实际在数据中找到的上次时间标记它们。在这两种情况下,我们只包括数据存在的时间间隔。

有(1)?aggregate.zooaggregate.zoo更多的例子,(2)所有三种动物园护身符有实例和(3)搜索R-帮助存档的话aggregate.zootrunc发现甚至更多的例子。

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)] 
+0

嗨 我需要的不是“数据的时间间隔内最后一个点的” 也不 但 “时间间隔,其结束” 的比喻是 “在此间隔开始时间” ...我需要天花板而不是地板或截断 – skan 2010-09-03 16:19:13

+0

我想过一个可能的解决方案: 添加14分钟,然后截断结果。 你觉得呢? (我想我的秒数是00) 这个问题会在年份发生变化并添加一些闰秒时发生。 – skan 2010-09-03 19:26:20

+0

是, delta < - as.numeric(times(“00:14:59”)); aggregate(z,trunc(time(z)+ delta,“00:15:00”),tail,1)应该这样做。 – 2010-09-04 23:30:54

3

如果我记得,这是记录在zoo小插曲。你看过那里吗?

xts程序包,其基于zoo具有帮助函数 - 具体见help(to.period)to.minutes15函数。