根據新的規格限制重新分類我有一個表,其中包含許多帶有規格限制的參數和一個通過失敗列。
我使用管理規格限制來更改一些限制並將它們重新載入到表的列中。
到目前為止還好。
但現在我想根據新的規格限制重新分類所有設備(即重新確定通過和失敗)。
由於有很多很多參數,編寫公式來執行此操作會很麻煩並且需要相當多的時間。
我可以編寫一個腳本來執行此操作(確定具有規格限制的列並基於此建立公式列)。
但是 JMP 中有內建的東西可以做到這一點嗎?
消費者與市場研究回覆:根據新的規格限制重新分類你的觀察是正確的。我提供的程式碼假設所有欄位都有規格限制。您建立僅包含完全限定列的子集的建議是處理它的一種方法。這將是一個好方法。
另一種選擇是在提供的程式碼中添加識別沒有規格限制的列的能力,並繞過它們。
無論哪種方式都會起作用。
回覆:根據新的規格限制重新分類謝謝,吉姆! 它肯定要快得多。
這種矩陣方法是否能夠處理「不考慮 USL=LSL 的欄位」或「無規格限制的欄位」等異常情況?
我是否需要先建立一個包含有效列(自訂列子集並透過「無效」條件自動排除列)的子表,然後套用建議的腳本並使用結果列更新來源? --> 這是一種有效的編碼方式嗎?
回覆:根據新的規格限制重新分類我認為以下腳本是您查找首次失敗測試的更好方法。此腳本建立一個新列,並使用第一個失敗列的名稱填入該列

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;
);
回覆:根據新的規格限制重新分類 theRows = dt << get rows where( Eval( specs["LSL"] ) >= As Column( dt, colNames[i] ) | As Column( dt, colNames[i] ) >= Eval( specs["USL"] ) );
我得到了它!
回覆:根據新的規格限制重新分類@tx尼爾森
嘿吉姆,
我正在嘗試修改您在此處提供的腳本。
我失敗了...
我想要一個額外的欄位來收集失敗類別。 失敗類別應顯示第一個失敗列。 因此,我反向循環,目的是涵蓋所有後續的失敗類別。
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]
);
);
);
看出腳本有什麼問題了嗎?
回覆:根據新的規格限制重新分類謝謝。 這很有效。
我還在腳本循環中建立了一個表達式,用作計算總體通過/失敗結果的公式。回覆:根據新的規格限制重新分類我不知道基於規格限制的 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"
);
);
);