r - 按时钟时间聚合一个带时间戳的动物园对象(即不仅仅按动物园对象中的时间)

标签 r aggregation zoo

我有一个动物园对象,它由一个带时间戳的(到第二个)时间序列组成。时间序列是不规则的,因为值之间的时间间隔不是规则间隔的。

我想将不规则间隔的时间序列对象转换为规则间隔的对象,其中值之间的时间间隔是一个常数 - 比如 15 分钟,并且是“真实世界”的时钟时间。

一些示例数据可能有助于进一步说明

# Sample data
2011-05-05 09:30:04 101.32
2011-05-05 09:30:14 100.09
2011-05-05 09:30:19 99.89
2011-05-05 09:30:35 89.66
2011-05-05 09:30:45 95.16
2011-05-05 09:31:12 100.28
2011-05-05 09:31:50 100.28
2011-05-05 09:32:10 98.28

我想在每个指定时间段(例如 30 秒时间段)汇总它们(使用我的自定义函数),以使输出如下表所示。

关键是我想从我的第一次观察时间开始每 30 秒按时钟时间而不是 30 秒聚合一次。自然地,第一个时间桶将是我在要聚合的数据中记录观察(即行)的第一个时间桶。

2011-05-05 09:30:00   101.32
2011-05-05 09:30:30   89.66
2011-05-05 09:31:00   100.28

在给出的示例中,我的自定义聚合函数只是返回要聚合的“选定行”的“集合”中的第一个值。

最佳答案

读入数据,然后按分钟聚合:

Lines <- "2011-05-05 09:30:04 101.32
2011-05-05 09:30:14 100.09
2011-05-05 09:30:19 99.89
2011-05-05 09:30:35 89.66
2011-05-05 09:30:45 95.16
2011-05-05 09:31:12 100.28
2011-05-05 09:31:50 100.28
2011-05-05 09:32:10 98.28"

library(zoo)
library(chron)
toChron <- function(d, t) as.chron(paste(d, t))
z <- read.zoo(text = Lines, index = 1:2, FUN = toChron)
aggregate(z, trunc(time(z), "00:01:00"), mean)

结果是:

(05/05/11 09:30:00) (05/05/11 09:31:00) (05/05/11 09:32:00) 
             97.224             100.280              98.280 

关于r - 按时钟时间聚合一个带时间戳的动物园对象(即不仅仅按动物园对象中的时间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9152469/

相关文章:

r - 在 data.table 或快速子集中快速搜索

r - 通过带有嵌入式传单 svg 等的 RSelenium 提取底层数据

regex - 定位非 alpha 或空格的有效方法

sql - 用于数据分析的 NoSQL 或 RDBMS

r - 当范围每天都在变化时,如何使用 plot() 调整 x 轴?

com - 大多数对象不支持 COM 聚合吗?

即使安装包后,R 也找不到包

R时间序列-三个月三个月的百分比变化

r - 使用线性插值填充空白单元格

group-by - 聚合 Dask 数据帧并生成聚合数据帧