Compter les occurrences entre 2 autres occurrences en fonction de la période🙋 :female_sign : Salut!
Dans la colonne "Sous-type", je dois compter le nombre de fois où "Stadium N2" apparaît entre 2 occurrences du mot "REM", uniquement lorsque l'heure dans la colonne "Début" de la deuxième occurrence REM est dans les 15 minutes suivant la heure dans la colonne "Fin" de la première occurrence REM.
Voir les étoiles sur la capture d'écran : dans ce cas, le décompte serait de 3
Quelle est la formule pour y parvenir ?
Merci :hugging_face: :mains_pliées:
Automatisation et scriptsmacOSRe : Compter les occurrences entre 2 autres occurrences en fonction de la périodePourriez-vous fournir des exemples de données pour faciliter les tests ?
Re : Compter les occurrences entre 2 autres occurrences en fonction de la périodeTe voilà!
Re : Compter les occurrences entre 2 autres occurrences en fonction de la périodeEncore une question : la valeur cumulée est-elle acceptable ? Donc sur le premier Stade N2 entre deux REM ce serait 1 et deuxième 2 et ainsi de suite ?
Re : Compter les occurrences entre 2 autres occurrences en fonction de la périodeCe n'est certainement pas la seule option, mais en fonction de la quantité de données dont vous disposez, quelque chose comme ceci pourrait fonctionner lorsque vous ajoutez deux colonnes à votre tableau.
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 : Compter les occurrences entre 2 autres occurrences en fonction de la périodeMerci pour la suggestion, cela identifie en effet tous les N2 intermittents au REM 
Je dois cependant compter uniquement ceux qui se situent entre 2 REM qui sont espacés de 15 minutes maximum (la plupart des heures de fin du REM et les heures de début du REM suivantes sont espacées de > 15 minutes).
Comment intégreriez-vous ce filtre temporel ?
Re : Compter les occurrences entre 2 autres occurrences en fonction de la périodeComment les données doivent-elles être ordonnées pour cela ? Par exemple, ici, nous avons le premier REM qui se termine avant la fin suivante ?

Ou les données sont-elles déjà correctement ordonnées (je viens de changer le format ici pour être date et heure) ? Il nous manque des informations sur la date, alors comment différencier le changement de jour ou devrions-nous le deviner en fonction des horodatages ?

Edit : suivre l'ordre d'origine des données et se soucier uniquement de vérifier la fin et le prochain démarrage
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 : Compter les occurrences entre 2 autres occurrences en fonction de la périodeMerci! Les valeurs étaient en effet déjà ordonnées par Start.
Petite question complémentaire : je dois vérifier manuellement l'exactitude, mais je ne peux le faire qu'après un regroupement par d'autres colonnes : ID, : Validated, : Subtype
où et comment pourrais-je me situer dans le groupe ?
Re : Compter les occurrences entre 2 autres occurrences en fonction de la périodeL'ajout de variables de regroupement nécessiterait de nombreuses modifications du script. L'option la plus simple serait probablement d'ajouter un sous-ensemble de création pour chaque groupe, d'exécuter le calcul pour ceux-ci, puis de les joindre à la table de données d'origine (il peut être nécessaire d'ajouter une sorte de colonne d'identifiant unique). Une autre option assez simple serait de créer une seule colonne GROUP, puis de parcourir les différentes options en l'utilisant MAIS il faut faire attention aux indices.