不完整时间序列数据的运行平均值

标签 r datetime time-series moving-average

我有一个随时间推移的深度数据集(2 个月)。深度之间的最小时间间隔小于 1 分钟,最大时间间隔为几天。在 R 中,我想根据每个观察周围的 6 小时(或 12 小时)时间窗口(而不是基于滞后/领先观察数的窗口)计算深度的移动平均值。

我已经尝试过动物园包,但我似乎无法让 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")

任何建议将不胜感激。
先感谢您!

最佳答案

这不是您所要求的,但以防万一简单地将其切成 6 小时不重叠的时间间隔并在这些时间间隔内求平均值就足够了,那么这里有一些代码:

library(zoo)

z <- read.zoo("fid57.depth.test1.csv", header = TRUE, 
              index = 1:2, format = "%Y-%m-%d %H:%M:%S", tz = "")
z6 <- aggregate(xx, as.POSIXct(cut(time(z), "6 hours")), mean)

给这个:
> z6
2013-08-07 06:00:00 2013-08-07 12:00:00 2013-08-07 18:00:00 2013-08-08 00:00:00 
           43.40810            39.13500            22.31250            17.38333 
2013-08-08 06:00:00 2013-08-08 12:00:00 2013-08-08 18:00:00 2013-08-09 00:00:00 
                 NA            15.53333                  NA                  NA 
2013-08-09 06:00:00 2013-08-09 12:00:00 
                 NA            23.30455 

如果NA条目不需要使用 na.omit(z6) .

还要注意输入文件有一个 .csv扩展名,但不是 csv 文件。

上面例子中使用的数据是这样的:
"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
2013-08-07 09:05:35 47.05
2013-08-07 09:10:28 65.96
2013-08-07 09:37:21 40.01
2013-08-07 09:44:59 47.05
2013-08-07 09:58:30 43.53
2013-08-07 10:02:45 47.49
2013-08-07 10:07:23 47.93
2013-08-07 10:11:31 56.28
2013-08-07 10:15:38 61.12
2013-08-07 10:19:39 53.2
2013-08-07 10:27:28 43.53
2013-08-07 10:31:44 40.89
2013-08-07 10:45:19 31.2
2013-08-07 10:47:29 31.7
2013-08-07 10:49:44 41.33
2013-08-07 12:01:00 33.86
2013-08-07 12:05:06 35.62
2013-08-07 17:25:35 43.53
2013-08-07 17:40:25 43.53
2013-08-07 18:15:03 42.65
2013-08-07 21:29:33 16.3
2013-08-07 22:05:15 14.9
2013-08-07 22:07:44 15.4
2013-08-08 02:18:36 16.3
2013-08-08 02:23:26 16.3
2013-08-08 03:34:21 16.3
2013-08-08 03:55:46 16.7
2013-08-08 05:05:53 17.6
2013-08-08 05:10:27 21.1
2013-08-08 15:36:02 16.7
2013-08-08 16:12:20 12.8
2013-08-08 16:16:55 17.1
2013-08-09 13:17:04 22.4
2013-08-09 13:22:32 21.1
2013-08-09 13:25:58 24.2
2013-08-09 13:37:01 15.4
2013-08-09 13:40:16 14.1
2013-08-09 13:46:46 14.1
2013-08-09 13:54:31 27.26
2013-08-09 14:18:53 40.89
2013-08-09 14:22:34 21.5
2013-08-09 14:26:52 28.14
2013-08-09 14:36:35 27.26

关于不完整时间序列数据的运行平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21242917/

相关文章:

r - ! R中的grep - 查找不匹配的项目

r - R 中的子字符串和 gsub

datetime - 在Elasticsearch上查询最接近日期时间的文档的最佳方法是什么?

Python csv writerows 重新格式化日期时间以包括秒

R:计算时间序列中的增量

r - 如何添加缺失的日期并删除每小时时间序列中的重复日期

R 2.14字节编译——性能提升了多少

c# linq 按日期时间分组到最接近的秒

r - 查找时间间隔之间的时间计数

r - 使用 sf 列调整 Leaflet (R) 中的边界