集团通过索引不连续的时间表
2视图(30天)
显示旧的评论
我将确定分组基于两个时间标准从数组一个不连续的时间表。时间表是聚合1分钟的间隔。
的标准是:
1。连续rowtime至少5分钟,
和
2。至少一个rowtime不到15分钟从# 1(上图)或# 2)。
换句话说,至少5分钟的数据,如果一分钟连续在15分钟之后继续包括那些分钟组。
最后,我希望能够执行代数和其他操作变量包含在每一个新的分组(例如把每组的总和)。
提供示例数据。看起来应该有一个共4组。的一行(113)是一个时间,不符合上述critera,因此应该被丢弃或标记不同的组我可以删除它之后(也许通过一个“nan”标志?)。
0评论
接受的答案
凯利卡尼
2021年11月19日
这是一个可能的解决方案;它首先检查标准2然后回到验证# 1。你可以做到一举但发现连续运行可以乱所以我宁愿保持自己。我也选择不与南马克额外的团体,因为splitapply和其他分组功能坚持consecutive-integer分组;我发现它清洁过滤后的事实。
% 15分钟内第一组的标准
dt =分钟(diff (test1.TIMESTAMP));
grp = cumsum([真实;dt > 15);
%现在检查,每个小组至少有5分钟consecutives运行
maxrun = @ (x)马克斯(diff ([1;找到(分钟(diff (x)) > 1);长度(x) + 1]));
好= splitapply (@ (x) maxrun (x) > = 5, test1。时间戳、grp);
%每组的总和
grpsum = splitapply (@sum test1。mean_V、grp);
grpsum(~截止)=南;
3评论
凯利卡尼
2021年11月19日
你可以使用相同的splitapply设置你所需要的计算:
元= splitapply (@length test1。时间戳、grp);%的元素数量
t0 = splitapply (@min test1。时间戳、grp);%的最早时间