J'ai un grand ensemble de données où le cycle change au fil du temps. Je voudrais créer une colonne qui a un index de 1 au début de chaque cycle et continue de compter jusqu'au début du cycle suivant, puis le décompte recommence à 0. J'ai essayé d'utiliser les fonctions de comptage et de séquence indiquées ci-dessous, mais je rencontre des problèmes lorsque mon deuxième cycle a plus de valeurs que mon premier cycle (voir le diagramme ci-dessous où l'observation du cycle est la valeur que je veux que la formule produise et la colonne 109 est ce qui est produit par le script.)
dt << Nouvelle colonne("Observation de cycle", Numérique, Formule (Si(
:Cycle == 1, Séquence( 0, 1080, 1 ),
:Cycle == 2, Séquence( 0, 1439, 1 ),
:Cycle == 3, Séquence( 0, 360, 1 ),
:Cycle == 4, Séquence( 0, 360, 1 ),
:Cycle == 5, Séquence( 0, 360, 1 ),
:Cycle == 6, Séquence( 0, 180, 1 ),
:Cycle == 7, Séquence( 0, 180, 1 ),
:Cycle == 8, Séquence( 0, 180, 1 ),
:Cycle == 9, Séquence( 0, 180, 1 ),
:Cycle == 10, Séquence( 0, 180, 1 ),
Séquence( 0, 180, 1 )
)));

Comme @txnelson dit qu'il y a beaucoup de solutions dans la communauté pour un problème similaire.
Vous pouvez utiliser Lag(), mais les formules Col peuvent également être utiles dans des cas comme ceux-ci :
Col Cumulative Sum(1, :Cycle)
Si vous devez le décaler de 1, vous pouvez ajouter -1 à la formule après Col Cumulative Sum().
Pas nécessairement utile dans ce cas particulier, mais vidéo très utile de @brady_brady ce qui sera très probablement utile à un moment donné :
Colonnes de formules spéciales
Il existe plusieurs entrées de discussion précédentes concernant ce sujet, mais comme il s'agit d'une solution facile, j'ai créé un autre exemple pour votre situation spécifique.
Ci-joint un tableau de données avec une colonne de formules qui calcule les valeurs souhaitées

La formule est
If( Row() == 1,
value = 1,
If( :Cycle != Lag( :Cycle ),
value = 1,
value
++)
);
value;
Bien que ma solution fonctionne bien, @jthi la solution ci-dessous est une meilleure solution.