連続する列と行を見つけるこんにちは、
添付されているのは、PART-02 と PART-03 という 2 つの PART のデータ テーブルです。各パーツには、独自の列と行 (ColX、RowY) があります。JSL を使用して、連続する列または行が 4 回以上出現する PART を識別します。ここで、PART-02 は、連続して 4 回以上出現する行を持つ PART です。出力は、PART ID と以下のような結果を含むテーブルだけにします。


自動化とスクリプトRe: 連続する列と行を見つけるこれは私が考案した、新しいテーブルを作成し、指定したとおりにデータを入力するJSLです。
Names Default To Here( 1 );
dt = Current Data Table();
dtResults = dt <<
summary(
group( :LotLabel, :WaferLabel ),
output table( "Results" ),
Link to Original Data Table( 0 )
);
dtResults << delete columns( :N Rows );
dtResults << New Column( "Results",
character,
set each value( "FAIL" )
);
For Each Row(
dt,
If( Row() >= 4,
If(
Col Moving Average(
:ColX,
weighting = 1,
before = -3,
after = 0,
:LotLabel,
:WaferLabel
) == :ColX |
Col Moving Average(
:RowY,
weighting = 1,
before = -3,
after = 0,
:LotLabel,
:WaferLabel
) == :RowY,
dtResults:Results[dtResults << get rows where(
dtResults:LotLabel == dt:LotLabel &
dtResults:WaferLabel == dt:WaferLabel
)] = "PASS"
)
)
);

Re: 連続する列と行を見つけるこんにちは、ジム。前のデータセットでは、PART-01、02 は合格のはずです。誤った情報で申し訳ありません。添付されているのは、PART-01、02、03、17 を含むより大きなデータセットです。PART-01、02、03 は合格で、PART-17 のみが不合格のはずです。以下のようになるはずですが、スクリプトでは PART02、03 も不合格であると表示されています。

Re: 連続する列と行を見つけるはい、4 を 7 に、-3 を -6 に変更する必要があります。
重み付け係数は、各値の重みを平均として設定する機能を提供します。値 1 は、各値に等しい重み付けを使用することを示します。
Before = 移動平均の計算に使用する現在の行の前の行数を設定します。
After = 移動平均の計算に使用する現在の行の後の行数を設定します。
最後に、ディスカッションに JSL を入力するときは、プレビューの上部にある JSL アイコンを使用してください。これは、読者がコードを読んで解釈するのに非常に役立ちます。
あなたの最後の回答を編集し、リストされたJSLをJSL表示ボックスに移動しました
Re: 連続する列と行を見つけるこんにちは、ジム。前のデータセットでは、PART-01、02 は合格のはずです。誤った情報で申し訳ありません。添付されているのは、PART-01、02、03、17 を含むより大きなデータセットです。PART-01、02、03 は合格で、PART-17 のみが不合格のはずです。以下のようになるはずですが、スクリプトでは PART02、03 も不合格であると表示されています。

Re: 連続する列と行を見つける- 列移動平均をチェックとして使用しても機能しなかったため、7 行の標準偏差を使用するように変更しました。
- dtResults データ テーブルで行を検索するために使用していた方法が機能しませんでした。必要な正確さを得るために、For() ループに変更する必要がありました。
- ロジックが逆でした。値が連続して見つかった場合は、失敗ではなく合格でした。
Names Default To Here( 1 );
dt = Current Data Table();
dtResults = dt << summary(
group( :LotLabel, :WaferLabel ),
output table( "Results" ),
Link to Original Data Table( 0 )
);
dtResults << delete columns( :N Rows );
dtResults << New Column( "Results",
character,
set each value( "PASS" )
);
For( i = 1, i <= N Rows( dt ), i++,
If( i >= 7,
If(
Std Dev( dt:ColX[i - 6 :: i] ) == 0 |
Std Dev( dt:RowY[i - 6 :: i] ) == 0,
dtResults:Results[dtResults <<
get rows where(
dtResults:LotLabel == dt:LotLabel[i] & dtResults
:WaferLabel == dt:WaferLabel[i]
)] = "FAIL"
)
)
);
コードを研究する必要があります。単に切り取ってスクリプトに貼り付けるだけではいけません。将来の問題をデバッグし、修正を生成できるほど十分に学習する必要があります。
Re: 連続する列と行を見つけるありがとう、ジム。いくつか調整した後、うまくいきました。