別のソース列のグループに基づいてシーケンス列を作成する JMP スクリプト時間の経過とともにサイクルが変化する大規模なデータセットがあります。 各サイクルの開始時に 1 によるインデックスを持ち、次のサイクルが開始されるまでカウントアップし続け、その後カウントが 0 に戻る列を作成したいと考えています。 以下に示す count 関数と sequence 関数を使用してみましたが、2 番目のサイクルに最初のサイクルよりも多くの値が含まれる場合に問題が発生します (以下の図を参照してください。サイクルの観測値が数式で生成したい値であり、列 109 がその値です)スクリプトによって生成されます。)
dt << New Column("サイクル観測", Numeric, Formula (If(
:サイクル == 1、シーケンス( 0、1080、1 )、
:サイクル == 2、シーケンス( 0、1439、1 )、
:サイクル == 3、シーケンス( 0、360、1 )、
:サイクル == 4、シーケンス( 0、360、1 )、
:サイクル == 5、シーケンス( 0、360、1 )、
:サイクル == 6、シーケンス( 0、180、1 )、
:サイクル == 7、シーケンス( 0、180、1 )、
:サイクル == 8、シーケンス( 0、180、1 )、
:サイクル == 9、シーケンス( 0、180、1 )、
:サイクル == 10、シーケンス( 0、180、1 )、
シーケンス( 0, 180, 1 )
)));

高度な統計モデリング自動化とスクリプト作成品質およびプロセスエンジニアリングRe: 別のソース列のグループに基づいてシーケンス列を作成する JMP スクリプトありがとうございます。これは非常に役立つ情報であり、Col Cumulative Sum() はそれを行うための非常にエレガントな方法です。Re: 別のソース列のグループに基づいてシーケンス列を作成する JMP スクリプトとして@txnelsonコミュニティには同様の問題に対する解決策がたくさんあると述べています。
Lag() を使用することもできますが、次のような場合には Col 式も役立ちます。
Col Cumulative Sum(1, :Cycle)
1 ずつシフトする必要がある場合は、Col Cumulative Sum() の後の数式に -1 を追加します。
この特定のケースでは必ずしも役立つわけではありませんが、非常に役立つビデオ@brady_bradyこれはおそらく、ある時点で役に立つでしょう。
特殊な数式列
Re: 別のソース列のグループに基づいてシーケンス列を作成する JMP スクリプトこのトピックに関する以前のディスカッション エントリがいくつかありますが、これは簡単な解決策であるため、特定の状況に合わせて別の例を作成しました。
必要な値を計算する数式列を含むデータ テーブルが添付されています。

式は
If( Row() == 1,
value = 1,
If( :Cycle != Lag( :Cycle ),
value = 1,
value
++)
);
value;
私のソリューションはうまく機能しますが、 @jthi以下の解決策の方が良い解決策です。