将第二个采样间隔聚合为30秒间隔,POSIXct

时间:2016-12-30 08:53:32

标签: aggregate rstudio intervals posixct

[R]工作室的新手,并恭敬地请求帮助。

目标:我想以1秒的间隔收集数据,将其折叠为30秒间隔,然后将每个变量的“均值”与之相关联。

以下是我的数据:

line    datetime         AA  BB  CC
1  2016-06-27 14:13:16    6  0  0.0
2  2016-06-27 14:13:17   10  0 48.6
3  2016-06-27 14:13:18    7  0 52.0
4  2016-06-27 14:13:19   13  0 54.4
5  2016-06-27 14:13:20   16  0 60.8
6  2016-06-27 14:13:21    6  0 65.5
7  2016-06-27 14:13:22    6  0 47.5
8  2016-06-27 14:13:23    6  1 46.8
9  2016-06-27 14:13:24    4  1 55.5
10 2016-06-27 14:13:25    4  1 51.1
11 2016-06-27 14:13:26    4  1 53.4

我希望看到的是:

line    datetime        AA  BB  CC
1   2016-06-27 14:13:16 18  1 50.5
2   2016-06-27 14:13:46 19  1 52.8

(此处,变量AA,BB和CC均为平均值)。

有类似的问题,但没有一个类似的足以给我一个基础来处理我的小编码和编程知识。我一直在可能的基础解决方案和可能的解决方案之间来回踱步无济于事;主要是因为语言/语法实现对我来说仍然有点陌生。

1 个答案:

答案 0 :(得分:0)

我想你想尝试一下:(基础解决方案)

etw
              datetime AA BB   CC
1  2016-06-27 14:13:16  6  0  0.0
2  2016-06-27 14:13:17 10  0 48.6
3  2016-06-27 14:13:18  7  0 52.0
4  2016-06-27 14:13:19 13  0 54.4
5  2016-06-27 14:13:20 16  0 60.8
6  2016-06-27 14:13:21  6  0 65.5
7  2016-06-27 14:13:22  6  0 47.5
8  2016-06-27 14:13:23  6  1 46.8
9  2016-06-27 14:13:24  4  1 55.5
10 2016-06-27 14:13:25  4  1 51.1
11 2016-06-27 14:13:26  4  1 53.4

aggregate(x = etw, by = list(cut(etw$datetime,breaks = "10 sec")), FUN=mean )

              Group.1            datetime  AA  BB    CC
1 2016-06-27 14:13:16 2016-06-27 14:13:20 7.8 0.3 48.22
2 2016-06-27 14:13:26 2016-06-27 14:13:26 4.0 1.0 53.40

你可以将10秒部分改为30秒。但是 - 注意:休息=“10秒”将从最短时间开始将范围切割成10秒切片。在你的情况下会产生一个切片。

您也可以使用

手动定义范围

breaks = seq.POSIXt(from = as.POSIXct("2016-06-27 14:13:00"),to = as.POSIXct("2016-06-27 14:14:00"),by="10 sec"))

aggregate(x = etw,FUN=mean, by = list(cut(etw$datetime,breaks = seq.POSIXt(from =  as.POSIXct("2016-06-27 14:13:00"),to =  as.POSIXct("2016-06-27 14:14:00"),by="10 sec"))) )
              Group.1            datetime       AA        BB       CC
1 2016-06-27 14:13:10 2016-06-27 14:13:17 9.000000 0.0000000 38.75000
2 2016-06-27 14:13:20 2016-06-27 14:13:23 6.571429 0.5714286 54.37143 

这不是你想要得到的但是imho - 你的样本数据与所需的输出不对应:)