Contare l'evento tra altri 2 eventi in base al periodo di tempo🙋:segno_femminile: CIAO!
All'interno della colonna "Sottotipo", devo contare il numero di volte in cui "Stadio N2" appare tra 2 occorrenze della parola "REM", solo quando l'ora nella colonna "Inizio" della seconda occorrenza REM è entro 15 minuti dalla tempo nella colonna "Fine" del primo evento REM.
Vedi le stelle nello screenshot: in questo caso il conteggio sarebbe 3
Qual è la formula per farlo?
Grazie :hugging_face: :mani_piegate:
Automazione e scriptingMac OSRe: Contare l'evento tra altri 2 eventi in base al periodo di tempoPotresti fornire dati di esempio per facilitare i test?
Re: Contare l'evento tra altri 2 eventi in base al periodo di tempoEcco!
Re: Contare l'evento tra altri 2 eventi in base al periodo di tempoUn'altra domanda: il valore cumulativo va bene? Quindi sul primo Stadio N2 tra due REM sarebbe 1 e il secondo 2 e così via?
Re: Contare l'evento tra altri 2 eventi in base al periodo di tempoQuesta non è sicuramente l'unica opzione, ma a seconda della quantità di dati che hai, qualcosa di simile potrebbe funzionare se aggiungi due colonne alla tabella
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);
,
.
);
));
Re: Contare l'evento tra altri 2 eventi in base al periodo di tempoGrazie per il suggerimento, questo identifica effettivamente tutto l'N2 intermittente in REM 
Tuttavia, devo contare solo quelli che si trovano tra 2 REM che sono distanti al massimo 15 minuti (la maggior parte degli orari di fine REM e gli orari di inizio REM successivi sono distanti > 15 minuti).
Come integreresti questo filtro temporale?
Re: Contare l'evento tra altri 2 eventi in base al periodo di tempoCome dovrebbero essere ordinati i dati a tal fine? Ad esempio qui abbiamo il primo finale REM prima del prossimo finale?

Oppure i dati sono già ordinati correttamente (qui ho appena cambiato il formato in data e ora)? Ci mancano le informazioni sulla data, quindi come possiamo distinguere quando il giorno cambia o dovremmo indovinarlo in base ai timestamp?

Modifica: seguire l'ordine originale dei dati e preoccuparsi solo di controllare la fine e l'inizio successivo
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;
);
);
Re: Contare l'evento tra altri 2 eventi in base al periodo di tempoGrazie! I valori erano infatti già ordinati da Start.
Piccola domanda aggiuntiva: devo verificare manualmente la correttezza, ma posso farlo solo dopo aver raggruppato per altre colonne: ID,: Validated,: Subtype
dove e come mi inserirei nel raggruppamento in base a?
Re: Contare l'evento tra altri 2 eventi in base al periodo di tempoL'aggiunta di variabili di raggruppamento richiederebbe molte modifiche allo script. L'opzione più semplice sarebbe molto probabilmente quella di aggiungere la creazione di un sottoinsieme per ciascun gruppo, eseguire il calcolo per quelli e quindi unirli nuovamente alla tabella dati originale (potrebbe essere necessario aggiungere una sorta di colonna identificatore univoco). Un'altra opzione abbastanza semplice sarebbe quella di creare una singola colonna GRUPPO e quindi ripetere le diverse opzioni utilizzando quella, MA bisogna stare attenti con gli indici.