グループごとに列挙するインデックスこんにちは、
グループまたは行のセットで列挙するインデックスを設定しようとしています。私が達成しようとしていることをよりよく説明するために、写真を添付しました。
写真でわかるように、インデックスをステップのグループに基づいて取得しようとしています。ここでの難しさ、または私が難しいと感じているのは、各グループに各ステップが記載されているインスタンスの数が異なる可能性があり、リストされていないギャップがあることです。

これは、:Achieved_Indexに表示される結果を取得するために使用したものですが、実際に探しているのは:Expected_Indexのような結果です
dt = Data Table("sample");
dt << New Column( "Achieved_Index", Numeric( ) );
x = 1;
For Each Row( If( :StepName == "",
:Achieved_Index = 0,
If( Lag(:StepName, -1) != "" | :StepName == "STEP3",
:Achieved_Index = x,
x = x + 1
)
)
);最終的な目標は、そのインデックス列を正しく機能させることです。これを使用してフラグ列を設定し、中間点を識別するか、インスタンスが2つしかない場合は各グループの最後のステップを識別します。Lag()関数でこの値を使用するよりも、インデックスごとに各ステップのカウントを取得し、2で割る以外に、これについてはあまり考えていません。これに関する提案も感謝します!
Re:グループごとに列挙するインデックス以下の式は、あなたが望む答えを得るでしょう
If( Row() == 1, step = 0 );
If( :stepName != "" & Lag( :stepName ) == "" | Row() == 1,
step
++);
If( :stepName != "", step, 0 );
Re:グループごとに列挙するインデックスtxnelson、助けてくれてありがとう。これにより、必要な場所にたどり着きました。
これは私が探していたものを実行したコードです:
For Each Row(
If( Row() == 1, step = 0);
If(Row() == 1 & :StepName != "", step = 1);
If( :StepName != "" & Lag( :StepName ) == "",
:Achieved_index = step++);
If( :StepName != "", :Achieved_index = step, :Achieved_index = 0 );
);
インデックスと呼んでいるのに、1から始めたいと思ったので、いくつかの編集/追加を行う必要がありました。
また、最初の行に:StepName == ""が含まれている場合、カウントが無効になるため、Ifステートメントを追加する必要がありました。