새로운 사양 제한에 따른 리비닝(Re-binning)사양 제한이 있는 여러 매개변수와 통과 실패 열이 포함된 테이블이 있습니다.
저는 사양 제한 관리를 사용하여 일부 제한을 변경하고 이를 테이블 열에 다시 로드합니다.
좋아요 지금까지는요.
하지만 이제는 새로운 사양 제한에 따라 모든 장치를 다시 분류하고 싶습니다(즉, 합격 및 실패를 다시 결정).
매개변수가 너무 많기 때문에 이를 수행하기 위한 공식을 작성하는 것은 다루기 힘들고 시간도 꽤 걸릴 것입니다.
이를 수행하기 위한 스크립트를 작성할 수 있습니다(사양 제한이 있는 열을 결정하고 이를 기반으로 수식 열 생성).
그런데 JMP에는 이를 수행할 수 있는 기능이 내장되어 있나요?
소비자 및 시장 조사Re: 새로운 사양 제한을 기반으로 다시 비닝당신의 관찰은 정확합니다.제가 제공한 코드는 모든 열에 사양 제한이 있다고 가정합니다.정규화된 열만 포함하는 하위 집합을 생성하라는 귀하의 제안은 이를 처리하는 한 가지 방법입니다.그리고 그것은 좋은 방법이 될 것입니다.
또 다른 대안은 제공된 코드에 사양 제한이 없는 열을 식별하고 이를 우회하는 기능을 추가하는 것입니다.
어느 쪽이든 효과가 있을 것입니다.
Re: 새로운 사양 제한을 기반으로 다시 비닝고마워요, 짐! 확실히 훨씬 빠릅니다.
행렬을 사용하는 이 접근 방식은 "USL=LSL인 열을 고려하지 않음" 또는 "사양 제한이 없는 열"과 같은 예외를 처리할 수 있습니까?
먼저 유효한 열(열의 사용자 지정 하위 집합 및 "유효하지 않은" 조건에 의한 열 자동 제외)이 있는 하위 테이블을 만든 다음 제안된 스크립트를 적용하고 결과 열로 원본을 업데이트해야 합니까? --> 효율적인 코딩 방법인가?
Re: 새로운 사양 제한을 기반으로 다시 비닝첫 번째 실패 테스트를 찾는 데 다음 스크립트가 더 나은 접근 방식이라고 생각합니다.이 스크립트는 새 열을 생성하고 첫 번째 실패 열의 이름으로 열을 채웁니다.

Names Default To Here( 1 );
dt=open("$SAMPLE_DATA/semiconductor capability.jmp");
USLVals = LSLVals = [];
For( i = 5, i <= N Cols( dt ), i++,
USLVals = USLVals || Matrix( (Column( dt, i ) << get property( spec limits ))["USL"] );
LSLVals = LSLVals || Matrix( (Column( dt, i ) << get property( spec limits ))["LSL"] );
);
dt << New Column( "First Fail", character );
For( i = 1, i <= N Rows( dt ), i++,
theMin = Min(
Min( Loc( (USLVals < dt[i, Index( 5, N Cols( dt ) - 1 )]) ) ),
Min( Loc( (dt[i, Index( 5, N Cols( dt ) - 1 )]) < LSLVals ) )
);
:First Fail[i] = Column( dt, theMin + 4 ) << get name;
);
Re: 새로운 사양 제한을 기반으로 다시 비닝 theRows = dt << get rows where( Eval( specs["LSL"] ) >= As Column( dt, colNames[i] ) | As Column( dt, colNames[i] ) >= Eval( specs["USL"] ) );
알겠어요!
Re: 새로운 사양 제한을 기반으로 다시 비닝@txnelson
안녕 짐,
여기에 제공한 스크립트를 수정하려고 합니다.
난 실패하고 있어...
실패 범주를 수집하는 하나의 추가 열을 갖고 싶습니다. 실패 범주에는 첫 번째 실패 열이 표시되어야 합니다. 따라서 이후의 모든 실패 범주를 덮어쓰려는 의도로 역방향을 반복합니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
dt << New Column( "First_Failed_Test", character, set each value( "Pass" ) );
colNames = dt << get column names( continuous, string );
For( i = N Items( colNames ), i >= 1, i--,
Clear Symbols( specs );
specs = Column( dt, colNames[i] ) << get property( "Spec Limits" );
If( Is Empty( specs ) == 0 | Eval( specs["LSL"] ) != Eval( specs["USL"]) ,
theRows = dt << get rows where( Eval( specs["LSL"] ) >= As Column( dt, colNames[i] ) >= Eval( specs["USL"] ) );
If( N Rows( theRows ),
Column( dt, "First_Failed_Test" )[theRows] = colNames[i]
);
);
);
스크립트에 어떤 문제가 있는지 확인하셨나요?
Re: 새로운 사양 제한을 기반으로 다시 비닝감사해요. 이것은 잘 작동했습니다.
또한 전체 합격-실패 결과를 계산하는 공식으로 사용하기 위해 스크립트 루프에 표현식을 작성했습니다.Re: 새로운 사양 제한을 기반으로 다시 비닝사양 제한을 기반으로 하는 JMP 비닝 도구는 모르지만 여기에 비닝을 수행하는 매우 효율적인 코드가 있습니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
colNames = dt << get column names( continuous, string );
For( i = 1, i <= N Items( colNames ), i++,
Clear Symbols( specs );
specs = Column( dt, colNames[i] ) << get property( "Spec Limits" );
If( Is Empty( specs ) == 0,
dt << New Column( colNames[i] || " Pass_Fail", character, set each value( "Fail" ) );
theRows = dt << get rows where( Eval( specs["LSL"] ) <= As Column( dt, colNames[i] ) <= Eval( specs["USL"] ) );
If( N Rows( theRows ),
Column( dt, colNames[i] || " Pass_Fail" )[theRows] = "Pass"
);
);
);