如何减少时间间隔和平均观察?

时间:2015-02-13 12:42:06

标签: r excel datetime binary-data reduce

我有两列数据:DD / MM / YY HH.MM格式的时间列和每个时间单元格的二进制数据列,例如:

Time                Set
2015-01-02 14:39:35 0
2015-01-02 14:39:36 1
2015-01-02 14:40:11 0
2015-01-02 14:40:50 1
2015-01-04 07:53:47 0
2015-01-04 07:54:17 1
2015-01-04 12:18:02 0

我想将时间间隔更改为固定的时间间隔,比如五分钟,并显示此间隔内观察值的平均值。

有没有办法可以在Excel中使用过滤或VBA宏,或者在R?

中完成

我希望没有任何可重复的代码就可以提供帮助。

3 个答案:

答案 0 :(得分:0)

这是一种方法:

time <- as.POSIXct(strsplit("2015-01-02 14:39:35, 2015-01-02 14:39:36, 2015-01-02 14:40:11, 2015-01-02 14:40:50,2015-01-04 07:53:47, 2015-01-04 07:54:17, 2015-01-04 12:18:02", ",\\s?")[[1]])
set <- sample(c(0, 1), size = length(time), replace = TRUE)
aggregate(set, list(groups <- cut(time, breaks = "5 mins")), mean)
#      Group.1   x
# 1 2015-01-02 14:39:00 0.5
# 2 2015-01-04 07:49:00 0.0
# 3 2015-01-04 07:54:00 0.0
# 4 2015-01-04 12:14:00 1.0

5分钟间隔存储在groups

答案 1 :(得分:0)

UNTESTED假设时间在ColumnA中。遗憾的是,数据集的分组和平均值在数据透视表中并不能很好地结合在一起,但您可以尝试在A2中添加一个带有1的数据列(例如插入一个新的ColumnA),并使用以下公式:

 =IF(B3-B2>1/288,A2+1,A2)  
A3中的

,复制到西装。

然后在您的PT中将其作为ROWS的第一项,Time在那里包含第二项,并在VALUES中选择平均值Set

答案 2 :(得分:0)

感谢您的回复

到目前为止,我创建了一个新列,其中我将时间数据向上或向下舍入到最接近的5分钟,其中包含:

=(ROUND((B2 * 1440)/ 5; 0)* 5)/ 1440

其中B2是原始时间列中的第一个数据点

到目前为止一切顺利 我想我可以在Excel中完成剩下的工作......而不是R

新的时间列现在是这样的: 03-01-2015 07:00:00,03-01-2015 07:05:00,03-01-2015 07:05:00,03-01-2015 14:25:00 03-01-2015 14: 25:00,....

现在我想&#34;崩溃&#34;时间和观察数据,每5分钟进入1个数据点并且每次具有1个值,0或1表示在例如1和5的范围内的大多数数字。 07:05:00观测。 这样时间列变为: 03-01-2015 07:00:00,03-01-2015 07:05:00,03-01-2015 14:25:00,...

有意义吗?