同一时间点的重叠/周期计数大家好,
我目前正在努力处理一些数据可视化问题。 我有一个巨大的表,其中包含捕获的数千个事件,包括。不同位置的不同事件的开始和结束时间(这些显示为文本)采用以下格式,我成功地将其转换为时间:
开始时间: 2022-01-28T22:26:13
结束于: 2022-01-28T23:10:56
我现在想可视化/计算并行事件的数量,即覆盖所有结果周期并查看不同位置上并行事件的最大数量。 我还提供了可用的持续时间作为开始时间和结束时间之间的差异,所以如果需要的话......
也许有人可以帮助我?
干杯!
JMP16
数据探索和可视化大规模定制视窗回复:同一时间点的重叠/周期计数该方法几乎没有问题(我后来注意到了),但幸运的是,由于它是交互式方法,您可以很容易地从数据中看到它们(我添加了一些示例图像)。 这些也可能不是问题,具体取决于计算的内容。
1. 如果某一时间在检查的开始时间之前开始并在检查的结束时间之后结束,则不计算
2. 如果时间开始和结束时间在检查的时间之间,则会计算两次
回复:同一时间点的重叠/周期计数你好,
非常感谢您的代码。 我检查了它,它可能对其他目的有帮助。 但是:你的想法
”您应该能够在 JMP 中几乎以交互方式执行此操作,方法是创建包含三列的新数据表:时间、TypeOfTime(start,end) 和原始行号。 然后按升序对其进行排序并编写一个公式来检查重叠(可以使用 Lag(),我使用 Col Min(Row(), :Row) 和 Col Max(Row(), :Row()) 以及它们的区别) 。 最后创建汇总表以根据行号获取最大值/连接回原始表。”
曾是简单又棒! 我只是堆叠、按时间戳排序并实现了一个公式通道,根据开始还是结束简单地返回 +1/-1,然后在另一个通道中将它们相加。 奇迹般有效!
回复:同一时间点的重叠/周期计数嗨,jthi,
首先非常感谢您的努力! 我会尽快查看解决方案并反馈给您!!
干杯
乌尔夫
回复:同一时间点的重叠/周期计数我注意到我最初的方法存在一些问题,所以我重新思考并编写了新脚本,希望它现在是正确的。 仅使用矩阵计算很可能会更快,但我现在懒得这样做。 它确实故意保留了相当多的数据表,因此更容易检查值是否正确
Names Default To Here(1);
dt = Current Data Table();
dt << Clear Select;
dt << Sort(By(:"Start time (UTC)"n), Replace Table, Order(Ascending));
dt << New Column("Overlap", Numeric, Continuous);
dt << New Column("OriginalRowOrder", Numeric, Continuous, <<SET each="" value=""> :MaxRowForRow);
inside + outside; // if you need only inside, then don't calculate outside overlaps and just return inside
)
);
dt_overlaps << Update(
With(dt),
Match Columns(:OriginalRowOrder = :OriginalRowOrder),
Add Columns from Update Table(
:"Start time (UTC)"n, :"End time (UTC)"n, :Location
)
);
dt_statistics = dt_overlaps << Summary(
Group(:Location),
Min(:Overlaps),
Max(:Overlaps),
Range(:Overlaps),
Mean(:Overlaps),
Median(:Overlaps),
Freq("None"),
Weight("None"),
statistics column name format("stat"),
Link to original data table(0),
output table name("Overlap statistics by location")
);
f = Function({a},
selected_rows = dt_overlaps << Get Selected Rows;
dt_stack << Select Where(Contains(dt_overlaps[selected_rows, "OriginalRowOrder"], :OriginalRowOrder))
);
rs = dt_overlaps << make row state handler(f);</SET>回复:同一时间点的重叠/周期计数如果想法是仅获得位置的最大重叠量,您可以首先通过将开始时间和结束时间添加到矩阵来计算所有重叠,然后对其进行排序,同时跟踪结束时间和开始时间。 然后您可以计算每个起始端对之间适合多少个值。
也许这样的事情会起作用(可能会出现一些重复值的问题):
Names Default To Here(1);
dt = Current Data Table();
dt << New Column("Overlap", Numeric, Continuous);
dt << Sort(By(:"Start time (UTC)"n), Replace Table, Order(Ascending));
starts = dt[0, 1];
ends = dt[0, 2];
m = Sort Ascending(starts |/ ends);
For Each Row(dt,
start = :"Start time (UTC)"n;
end = :"End time (UTC)"n;
:Overlap = Loc(m, end)[1] - Loc(m, start)[1] - 1;
);
/*
dt << New Column("MaxOverlap", Numeric, Continuous, << Set Each Value(
Col Max(:Overlap, :Location)
));
*/
tab = dt << Tabulate(
Show Control Panel(0),
Add Table(
Column Table(Statistics(Min, Mean, Max), Analysis Columns(:Overlap)),
Row Table(Grouping Columns(:Location))
)
);

您应该能够在 JMP 中几乎以交互方式执行此操作,方法是创建包含三列的新数据表:时间、TypeOfTime(start,end) 和原始行号。 然后按升序对其进行排序并编写一个公式来检查重叠(可以使用 Lag(),我使用 Col Min(Row(), :Row) 和 Col Max(Row(), :Row()) 以及它们的区别) 。 最后创建汇总表以根据行号获取最大值/连接回原始表。

总结(这里没有添加max):

这两种方法似乎略有不同,因此可能其中一种方法是错误的。 可能是由重复值引起的(我也从交互方法中删除了缺失值)

当您有数据表时,更容易查找可能的问题:

此外,还可以使用 JMP16 的增强日志轻松编写交互式方法的脚本。
编辑:这很可能存在以下问题:1.如果一个时间在检查的开始时间之前开始并在检查的结束时间之后结束,则不会计算该时间;2.如果时间在检查的时间之间开始和结束,则会计算两次。 第二个应该相当容易修复,但第一个需要更多的修复。
示例 2。 OriginalRowOrder 在 OriginalRowOrder 10 内开始和结束,并计算两次:

示例 1。 OriginalRowOrder 13 在 14 之外开始和结束:

Edit2:没有费心去弄清楚如何交互式地处理这些,所以我很快写了两个公式(希望它们是正确的......)。 在使用缺失值之前必须删除/重新编码。 如果使用公式完成而没有任何额外的优化,OverlapsOutside 可能会有点慢。
OverlapsInside(应该解决问题2):
N Items(Associative Array(:OriginalRowOrder[Index(:MinRowForRow, :MaxRowForRow)])) - 1
OverlapsOutside(应该解决问题1):
If(Row() == 1,
m = :OriginalRowOrder << Get As Matrix
);
Try(
starts = Associative Array(m[Index(1, :MinRowForRow - 1)]);
ends = Associative Array(m[Index(:MaxRowForRow + 1, N Rows())]);
starts << Intersect(ends);
N Items(starts);
,
.
);
OverlapsInside 可能就足够了,具体取决于您想要如何计算重叠。 如果您需要两者,那么只需获取这些值的总和即可。


回复:同一时间点的重叠/周期计数这是一个只有两天的精简数据集,但它应该可以完成工作。 我不一定需要图形视图,但对于调试来说,对并行事件的数量是否合理进行某种控制会很棒。
提前致谢!!
乌尔夫
回复:同一时间点的重叠/周期计数特克斯尼尔森,
感谢您的提示,将下载该插件,因为它看起来非常有用。 但就我而言,由于我拥有的位置数量太多,y 轴会过载。
回复:同一时间点的重叠/周期计数我建议您下载甘特图插件。它将为您提供一种展示活动的好方法。

回复:同一时间点的重叠/周期计数你好@ubpk ,
也许如果您在表格中给我们一个小样本,我可以尝试一下。
否则,请查看随附的表格和图像,并让我们知道这是否是正确的开始方向。如果您在数据表中运行脚本,您将得到图表。
一切顺利,
罗恩
