연속된 열과 행 찾기안녕하세요,
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: 연속된 열과 행 찾기안녕하세요, Jim님, 이전 데이터세트에서는 PART-01의 경우 02가 통과되어야 합니다. 잘못된 정보를 알려드려 죄송합니다. PART-01,02,03,17을 포함한 더 큰 데이터 세트가 첨부되어 있습니다. 파트 01,02,03은 합격이어야 하고 파트 17만 실패해야 합니다. 아래와 같아야 하지만 스크립트에는 PART02,03도 실패한다고 나와 있습니다.

Re: 연속된 열과 행 찾기예, 4를 7로, -3을 -6으로 변경해야 합니다.
가중치 요소는 각 값의 평균 가중치를 설정하는 기능을 제공합니다. 값 1은 각 값에 동일한 가중치를 사용함을 나타냅니다.
이전 = 이동 평균 계산에 사용할 현재 행 앞의 행 수를 설정합니다.
이후 = 이동 평균 계산에 사용할 현재 행 뒤의 행 수를 설정합니다.
마지막으로 토론에 JSL을 입력할 때 미리보기 상단에 있는 JSL 아이콘을 사용하시기 바랍니다. 독자가 코드를 읽고 해석하는 데 정말 도움이 됩니다.
귀하의 마지막 응답을 편집하고 나열된 JSL을 JSL 표시 상자로 옮겼습니다.
Re: 연속된 열과 행 찾기안녕하세요, Jim님, 이전 데이터세트에서는 PART-01의 경우 02가 통과되어야 합니다. 잘못된 정보를 알려드려 죄송합니다. PART-01,02,03,17을 포함한 더 큰 데이터 세트가 첨부되어 있습니다. 파트 01,02,03은 합격이어야 하고 파트 17만 실패해야 합니다. 아래와 같아야 하지만 스크립트에는 PART02,03도 실패한다고 나와 있습니다.

Re: 연속된 열과 행 찾기- Col Moving Average를 이용한 검사가 잘 되지 않아 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: 연속된 열과 행 찾기고마워요, 짐. 약간의 조정 후에 그것은 나에게 효과적이었습니다.