我有两列数据: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?
中完成我希望没有任何可重复的代码就可以提供帮助。
答案 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,...
有意义吗?