新しい仕様制限に基づいて再ビニング仕様の制限と合格不合格の列を含む多数のパラメーターを含むテーブルがあります。
スペック制限の管理を使用して制限の一部を変更し、テーブルの列に再ロードします。
ここまではOK。
しかしここで、新しい仕様制限に基づいてすべてのデバイスを再ビン化する (つまり、合格と不合格を再決定する) 必要があります。
非常に多くのパラメーターがあるため、これを行うための式を記述するのは扱いにくく、かなりの時間がかかります。
これを行うためのスクリプトを作成できます (仕様制限のある列を決定し、それに基づいて数式列を作成します)。
しかし、JMP にはこれを行うための何かが組み込まれているのでしょうか?
消費者および市場調査Re: 新しい仕様制限に基づいた再ビニングあなたの観察は正しいです。私が提供したコードは、すべての列に仕様制限があることを前提としています。完全修飾列のみを含むサブセットを作成するという提案は、それを処理する 1 つの方法です。そしてそれは良い方法だろう。
もう 1 つの方法は、仕様制限のない列を識別し、それらをバイパスする機能を提供されたコードに追加することです。
どちらの方法でも機能します。
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
やあ、ジム、
ここで提供されたスクリプトを変更しようとしています。
失敗してるよ…
失敗カテゴリを収集する列を 1 つ追加したいと考えています。 失敗カテゴリには、最初に失敗した列が表示されます。 したがって、後続のすべての失敗カテゴリを上書きすることを目的として、逆方向にループします。
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"
);
);
);