Überlappung/Anzahl der Perioden zum gleichen ZeitpunktHallo zusammen,
Ich habe derzeit Probleme mit der Datenvisualisierung. Ich habe eine riesige Tabelle mit Tausenden von Ereignissen, die erfasst werden, inkl. Start- und Endzeit verschiedener Ereignisse an verschiedenen Orten (diese werden als Text angezeigt) im folgenden Format, das ich erfolgreich konvertiert habe, um als Zeit erkannt zu werden:
Start: 28.01.2022T22:26:13
Ende: 28.01.2022 um 23:10:56 Uhr
Ich möchte nun die Anzahl paralleler Ereignisse visualisieren/zählen, also alle resultierenden Zeiträume überlagern und die maximale Anzahl paralleler Ereignisse an den verschiedenen Standorten sehen. Ich habe auch die Dauer als Differenz zwischen Start- und Endzeit verfügbar, falls dies erforderlich sein sollte ...
Vielleicht kann mir einer helfen?
Prost!
JMP16
Datenexploration und -visualisierungMassenanpassungWindowsBetreff: Überlappung / Anzahl der Perioden zum gleichen ZeitpunktEs gibt nur wenige Probleme mit dieser Methode (die mir später aufgefallen sind), aber da es sich um eine interaktive Methode handelt, kann man sie glücklicherweise ziemlich leicht anhand der Daten erkennen (ich habe einige Beispielbilder hinzugefügt). Je nachdem, was berechnet wird, stellen diese möglicherweise auch kein Problem dar.
1. Wenn eine Zeit vor der überprüften Startzeit beginnt und nach der überprüften Endzeit endet, wird sie nicht berechnet
2. Wenn die Zeit zwischen den überprüften Zeiten beginnt und endet, wird sie zweimal berechnet
Betreff: Überlappung / Anzahl der Perioden zum gleichen ZeitpunktHallo,
vielen Dank für deinen Code. Ich habe es überprüft und es könnte für andere Zwecke hilfreich sein. ABER: Deine Idee
" Dies sollte in JMP auch nahezu interaktiv möglich sein, indem Sie eine neue Datentabelle mit drei Spalten erstellen: Zeit, TypeOfTime(Start, Ende) und ursprüngliche Zeilennummer. Sortieren Sie es dann aufsteigend und schreiben Sie eine Formel, um auf Überlappungen zu prüfen (Könnte vielleicht Lag() verwenden, ich habe Col Min(Row(), :Row) und Col Max(Row(), :Row()) und deren Differenz verwendet) . Erstellen Sie abschließend eine Übersichtstabelle, um den Maximalwert zu erhalten, und verbinden Sie sie basierend auf den Zeilennummern wieder mit der Originaltabelle.
War einfach und großartig! Ich habe einfach gestapelt, nach Zeitstempeln sortiert und einen Formelkanal implementiert, der einfach +1/-1 basierend auf Start oder Ende zurückgibt und diese dann in einem anderen Kanal zusammenfasst. Klappt wunderbar!
Betreff: Überlappung / Anzahl der Perioden zum gleichen ZeitpunktHallo jthi,
erstmal vielen Dank für deine Mühe! Ich werde die Lösung so schnell wie möglich prüfen und Ihnen Feedback geben!!
Prost
Ulf
Betreff: Überlappung / Anzahl der Perioden zum gleichen ZeitpunktMir sind bei meinem ursprünglichen Ansatz einige Probleme aufgefallen, daher habe ich etwas überlegt und ein neues Skript geschrieben, in der Hoffnung, dass es jetzt korrekt ist. Dies könnte höchstwahrscheinlich schneller erfolgen, wenn nur Matrixberechnungen verwendet würden, aber ich habe mir jetzt nicht die Mühe gemacht, es zu tun. Es lässt absichtlich einige Datentabellen offen, so dass es einfacher ist, zu überprüfen, ob die Werte korrekt sind
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>Betreff: Überlappung / Anzahl der Perioden zum gleichen ZeitpunktWenn die Idee darin besteht, nur die maximale Anzahl an Überlappungen für den Standort zu erhalten, können Sie zunächst alle Überlappungen berechnen, indem Sie Start- und Endzeiten zu einer Matrix hinzufügen und diese dann sortieren, während Sie im Auge behalten, was Ende und was Anfang ist. Dann können Sie berechnen, wie viele Werte zwischen jedes Start-End-Paar passen.
Vielleicht funktioniert so etwas (könnte Probleme mit doppelten Werten haben):
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))
)
);

Dies sollte in JMP auch nahezu interaktiv möglich sein, indem Sie eine neue Datentabelle mit drei Spalten erstellen: Zeit, TypeOfTime(Start, Ende) und ursprüngliche Zeilennummer. Sortieren Sie es dann aufsteigend und schreiben Sie eine Formel, um auf Überlappungen zu prüfen (Könnte vielleicht Lag() verwenden, ich habe Col Min(Row(), :Row) und Col Max(Row(), :Row()) und deren Differenz verwendet) . Erstellen Sie abschließend eine Übersichtstabelle, um den Maximalwert zu erhalten, und verbinden Sie sie basierend auf den Zeilennummern wieder mit der Originaltabelle.

Zusammenfassung (Max hier nicht hinzugefügt):

Es scheint geringfügige Unterschiede zwischen den beiden Methoden zu geben, daher ist möglicherweise eine davon falsch. Möglicherweise durch doppelte Werte verursacht (ich habe auch fehlende Werte aus der interaktiven Methode gelöscht)

Es ist viel einfacher, nach möglichen Problemen zu suchen, wenn Sie eine Datentabelle dafür haben:

Auch die interaktive Methode kann mit dem erweiterten Protokoll von JMP16 sehr einfach per Skript erstellt werden.
Bearbeiten: Dies hat höchstwahrscheinlich folgende Probleme: 1. Wenn eine Zeit vor der überprüften Startzeit beginnt und nach der überprüften Endzeit endet, wird sie nicht berechnet und 2. wenn die Zeit zwischen überprüften Zeiten beginnt und endet, wird sie zweimal berechnet . Das zweite Problem sollte relativ einfach zu beheben sein, das erste erfordert jedoch etwas mehr Aufwand.
Beispiel für 2. OriginalRowOrder beginnt und endet innerhalb von OriginalRowOrder 10 und wird zweimal berechnet:

Beispiel für 1. OriginalRowOrder 13 beginnt und endet außerhalb von 14:

Edit2: Ich habe mir nicht die Mühe gemacht, herauszufinden, wie diese interaktiv bearbeitet werden können, also habe ich ziemlich schnell zwei Formeln geschrieben (hoffentlich sind sie korrekt ...). Fehlende Werte müssen vor der Verwendung entfernt / neu codiert werden. OverlapsOutside kann etwas langsam werden, wenn die Formel ohne zusätzliche Optimierungen ausgeführt wird.
OverlapsInside (sollte Problem2 lösen):
N Items(Associative Array(:OriginalRowOrder[Index(:MinRowForRow, :MaxRowForRow)])) - 1
OverlapsOutside (sollte Problem1 lösen):
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 kann ausreichen, je nachdem, wie Sie Überlappungen berechnen möchten. Wenn Sie beides benötigen, ermitteln Sie einfach die Summe dieser Werte.


Betreff: Überlappung / Anzahl der Perioden zum gleichen ZeitpunktHier ist ein reduzierter Datensatz mit nur zwei Tagen, aber er sollte den Zweck erfüllen. Ich brauche nicht unbedingt eine grafische Ansicht, aber zum Debuggen wäre es toll, eine gewisse Kontrolle darüber zu haben, ob die Anzahl paralleler Ereignisse angemessen ist.
Dank im Voraus!!
Ulf
Betreff: Überlappung / Anzahl der Perioden zum gleichen Zeitpunkt Txnelson,
Vielen Dank für den Hinweis. Ich werde das Add-In herunterladen, da es recht brauchbar aussieht. Aber in meinem Fall wäre die Y-Achse aufgrund der Menge an Standorten, die ich habe, zu überlastet.
Betreff: Überlappung / Anzahl der Perioden zum gleichen ZeitpunktIch empfehle Ihnen, das Gantt-Diagramm-Add-in herunterzuladen.Es bietet Ihnen eine großartige Möglichkeit, Ihre Veranstaltungen zu präsentieren.

Betreff: Überlappung / Anzahl der Perioden zum gleichen ZeitpunktHallo @ubpk ,
Wenn Sie uns vielleicht eine kleine Probe in einer Tabelle geben, kann ich es vielleicht versuchen.
Andernfalls werfen Sie einen Blick auf die beigefügte Tabelle und das Bild und teilen Sie uns mit, ob dies für den Anfang in die richtige Richtung geht. Wenn Sie das Skript in der Datentabelle ausführen, erhalten Sie das Diagramm.
Alles Gute,
Ron
