【发布时间】:2014-02-10 03:34:45
【问题描述】:
我有一个随时间变化的深度数据集(2 个月)。深度之间的最短时间间隔小于 1 分钟,最长为数天。在 R 中,我想根据每个观察点周围的 6 小时(或 12 小时)时间窗口(而不是基于滞后/领先观察数量的窗口)计算深度的移动平均值。
我已经尝试了 zoo 包,但我似乎无法让 rollmean 为我工作。
我的一小部分数据是: https://www.dropbox.com/s/lhhrdgt2mxasc9v/fid57.depth.test1.csv
在 R 中它看起来像:
> str(my.data)
'data.frame': 51 obs. of 2 variables:
$ DateTime: POSIXct, format: "2013-08-07 06:49:46" "2013-08-07 06:55:17" "2013-08-07" 07:06:52" "2013-08-07 07:23:43" ...
$ Depth : num 28.6 31.7 29 35.2 33 ...
>head(my.data)
DateTime "Depth"
2013-08-07 06:49:46 28.58
2013-08-07 06:55:17 31.7
2013-08-07 07:06:52 29.02
2013-08-07 07:23:43 35.18
2013-08-07 07:27:14 32.98
2013-08-07 08:20:21 55.84
> dput(head(my.data))
structure(list(DateTime = structure(c(1375883386, 1375883717,
1375884412, 1375885423, 1375885634, 1375888821), class = c("POSIXct",
"POSIXt"), tzone = ""), Depth = c(28.58, 31.7, 29.02, 35.18,
32.98, 55.84)), .Names = c("DateTime", "Depth"), row.names = c(8481L,
8483L, 8484L, 8485L, 8487L, 8495L), class = "data.frame")
任何建议将不胜感激。
提前谢谢!
【问题讨论】:
-
请将
dput(head(my.data))的输出添加到问题中。 -
我不认为
rollapply会因为窗口大小的变化而在这里工作,但由于您正在寻找计算平均值,您应该能够提出跟踪滚动的快速算法六小时窗口。见this discussion。 -
这 (stackoverflow.com/questions/20134823/…) 会回答您的问题吗?我认为可能。它应该在几毫秒或更短的时间内给你答案。你问题的措辞完全不同,但我认为这两个问题本质上是在问同一个问题。
标签: r datetime time-series moving-average