Zählen Sie das Vorkommen zwischen zwei anderen Vorkommnissen basierend auf dem Zeitraum🙋‍:female_sign: Hallo!
In der Spalte „Subtyp“ muss ich zählen, wie oft „Stadium N2“ zwischen zwei Vorkommen des Wortes „REM“ erscheint, nur wenn die Zeit in der Spalte „Start“ des zweiten REM-Vorkommens innerhalb von 15 Minuten nach dem Vorkommen liegt Zeit in der Spalte „Ende“ des ersten REM-Ereignisses.
Siehe Sterne im Screenshot: In diesem Fall wäre die Anzahl 3
Wie lautet die Formel dafĂĽr?
Â
Danke :hugging_face: :folded_hands:
Automatisierung und SkripterstellungMac OSBetreff: Zählen Sie das Vorkommen zwischen zwei anderen Vorkommnissen basierend auf dem ZeitraumKönnten Sie Beispieldaten bereitstellen, um das Testen zu erleichtern?
Betreff: Zählen Sie das Vorkommen zwischen zwei anderen Vorkommnissen basierend auf dem ZeitraumHier sind Sie ja!
Betreff: Zählen Sie das Vorkommen zwischen zwei anderen Vorkommnissen basierend auf dem ZeitraumNoch eine Frage: Ist der kumulative Wert in Ordnung? Also wäre es im ersten Stadium N2 zwischen zwei REMs 1 und im zweiten 2 und so weiter?
Betreff: Zählen Sie das Vorkommen zwischen zwei anderen Vorkommnissen basierend auf dem ZeitraumDies ist definitiv nicht die einzige Option, aber abhängig von der Datenmenge, die Sie haben, könnte so etwas funktionieren, bei dem Sie Ihrer Tabelle zwei Spalten hinzufügen
Names Default To Here(1);
Current Data Table() << New Column("R", Numeric, Continuous, Formula(
Col Cumulative Sum(If(:SubType == "REM", 1, .))
));
Current Data Table() << New Column("c_n2", Numeric, Continuous, Formula(
If(!IsMissing(:R),
Col Sum(If(:SubType == "Stadium N2", 1, 0), :R);
,
.
);
));
Betreff: Zählen Sie das Vorkommen zwischen zwei anderen Vorkommnissen basierend auf dem ZeitraumVielen Dank für den Vorschlag, dies identifiziert tatsächlich alle N2-Intermittierungen bis hin zu REM 
Ich muss jedoch nur diejenigen zählen, die zwischen 2 REM liegen, die maximal 15 Minuten voneinander entfernt sind (die meisten REM-Endzeiten und die folgenden REM-Startzeiten liegen > 15 Minuten auseinander).
Wie wĂĽrden Sie diesen Zeitfilter integrieren?
Betreff: Zählen Sie das Vorkommen zwischen zwei anderen Vorkommnissen basierend auf dem ZeitraumWie sollen die Daten dafür geordnet sein? Hier haben wir zum Beispiel das erste REM-Ende, bevor das nächste endet?

Oder sind die Daten bereits korrekt geordnet (ich habe hier gerade das Format auf Datum und Uhrzeit geändert)? Uns fehlen Datumsinformationen. Wie können wir also unterscheiden, wann sich der Tag ändert, oder sollten wir dies anhand der Zeitstempel erraten?

Â
Bearbeiten: Behalten Sie die ursprüngliche Reihenfolge der Daten bei und kümmern Sie sich nur um die Überprüfung des Endes und des nächsten Starts
Names Default To Here(1);
dt = Open("$DOWNLOADS/example(1).jmp");
m_sub = dt[0, "SubType"];
rem_rows = Loc(m_sub, "REM");
rem_ends = dt[rem_rows, "Time of Day[End]"];
rem_starts = dt[rem_rows, "Time of Day[Start]"];
Remove From(rem_ends, N Items(rem_starts));
Remove From(rem_starts, 1);
rem_durs = (rem_starts - rem_ends);
new_col = dt << New Column("Counts", Numeric, Continuous);
For Each({rem_dur, idx}, rem_durs,
If(rem_dur < In Minutes(15) & rem_dur >= 0,
row_start = rem_rows[idx];
row_end = rem_rows[idx + 1];
ntwos = Loc(m_sub[row_start::row_end], "Stadium N2");
ntwo_count = N Items(ntwos);
dt[row_start::row_end, "Counts"] = ntwo_count;
);
);
Betreff: Zählen Sie das Vorkommen zwischen zwei anderen Vorkommnissen basierend auf dem ZeitraumDanke schön! Die Werte wurden tatsächlich bereits von Start bestellt.
Kleine Zusatzfrage: Ich muss die Richtigkeit manuell ĂĽberprĂĽfen, kann dies aber erst nach Gruppierung nach anderen Spalten :ID, :Validated, :Subtype tun
Wo und wie wĂĽrde ich in die Gruppierung passen?
Â
Â
Betreff: Zählen Sie das Vorkommen zwischen zwei anderen Vorkommnissen basierend auf dem ZeitraumDas Hinzufügen von Gruppierungsvariablen würde eine ganze Reihe von Änderungen am Skript erfordern. Die einfachste Option wäre höchstwahrscheinlich, für jede Gruppe eine Teilmenge zu erstellen, die Berechnung für diese durchzuführen und diese dann wieder mit der ursprünglichen Datentabelle zu verknüpfen (möglicherweise ist es erforderlich, eine Art eindeutige Kennungsspalte hinzuzufügen). Eine andere relativ einfache Option wäre, eine einzelne GROUP-Spalte zu erstellen und dann die verschiedenen Optionen damit zu durchlaufen, ABER man muss mit den Indizes vorsichtig sein.