我有一個大數據集,其中周期隨時間變化。 我想創建一個在每個週期開始時索引為 1 的列,並繼續計數直到下一個週期開始,然後計數從 0 開始。 我已經嘗試使用下面顯示的計數和序列函數,但是當我的第二個週期比我的第一個週期有更多的值時我遇到了問題(請參見下圖,其中周期觀察值是我希望公式產生的值,第 109 列是什麼值)由腳本生成。)
dt << 新列(“循環觀察”,數字,公式(如果(
:Cycle == 1, Sequence( 0, 1080, 1 ),
:Cycle == 2, 序列( 0, 1439, 1 ),
:Cycle == 3, Sequence( 0, 360, 1 ),
:Cycle == 4, Sequence( 0, 360, 1 ),
:Cycle == 5, 序列( 0, 360, 1 ),
:Cycle == 6, Sequence( 0, 180, 1 ),
:Cycle == 7, Sequence( 0, 180, 1 ),
:Cycle == 8, Sequence( 0, 180, 1 ),
:Cycle == 9, 序列( 0, 180, 1 ),
:Cycle == 10, Sequence( 0, 180, 1 ),
序列( 0, 180, 1 )
)));

作為@txnelson說社區中有很多類似問題的解決方案。
您可以使用 Lag(),但 Col 公式在以下情況下也很有幫助:
Col Cumulative Sum(1, :Cycle)
如果您需要將其移動 1,您可以在 Col Cumulative Sum() 之後的公式中添加 -1。
在這種特殊情況下不一定有幫助,但非常有用的視頻@brady_brady這很可能在某些時候有用:
特殊公式列
以前有幾個關於這個主題的討論條目,但由於它是一個簡單的解決方案,我為您的具體情況創建了另一個示例。
附件是一個數據表,其中包含計算所需值的公式列

公式是
If( Row() == 1,
value = 1,
If( :Cycle != Lag( :Cycle ),
value = 1,
value
++)
);
value;
雖然我的解決方案運行良好, @jthi下面的解決方案是一個更好的解決方案。