同一時間點的重疊/週期計數大家好,
我目前正在努力處理一些數據視覺化問題。 我有一個巨大的表,其中包含數千個捕獲的事件,包括。不同位置的不同事件的開始和結束時間(這些顯示為文字)採用以下格式,我成功地將其轉換為時間:
開始時間: 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 ,
也許如果您在表格中給我們一個小樣本,我可以嘗試一下。
否則,請查看隨附的表格和圖像,並讓我們知道這是否是正確的開始方向。如果您在資料表中運行腳本,您將得到圖表。
一切順利,
榮恩
