列をループする[Range Check]すでに入力されている仕様制限に基づいて範囲チェックを適用するためのガイダンスが欲しいのですが。
この1つのテストには87のスクリーニング制限があります。スペック制限を設定するために範囲チェックを適用したいと思います。
私は私が達成したいことのためにスクリプトを使うことができることを知っています、しかし、私は範囲チェック(LELE(16、46))を適用する方法を理解することができません、例えば
お時間をいただきありがとうございます
// dtsplitmeas is the table that is split
cols = dtsplitmeas << get Column names( string );
// dtlim is _SPEC LIMITS_ .jmp attached to this thread
// dtrange is _RANGE CHECK_ .jmp attached to this thread
// Assign Spec Limit script
For( i = 1, i <= N Cols( dtsplitmeas ), i++,
limrow = Try( (dtlim << get rows where( dtlim:SPEC_COL_NAMES == cols[i] ))[1], . );
If( Is Missing( limRow ) == 0,
specs = {LSL( . ), USL( . ), Target( . ), Show Limits( 1 )};
specs["LSL"] = dtlim:LSL[limrow];
specs["USL"] = dtlim:USL[limrow];
Column( dtsplitmeas, Char( cols[i] ) ) << set property( "spec limits", Eval( specs ) );
);
);
再:列をループする[Range Check]これは私のために働きます。 何らかの理由で失敗する可能性がある場合に備えて、行があることだけをチェックするように試みを変更しました。単にエラーを渡さないようにしてください。
Names default to here(1);
dtsplitmeas = Data Table("sample data");
dtlim = Data Table("_ SPEC LIMITS_");
dtrange = Data Table( "_ RANGE CHECK_" );
// dtsplitmeas is the table that is split
cols = dtsplitmeas << get Column names( string );
// dtlim is _SPEC LIMITS_ .jmp attached to this thread
// dtrange is _RANGE CHECK_ .jmp attached to this thread
// Assign Spec Limit script
For( i = 1, i <= N Cols( dtsplitmeas ), i++,
limrow = dtlim << get rows where( dtlim:SPEC_COL_NAMES == cols[i] );
If( nrows(limrow),
specs = {LSL( . ), USL( . ), Target( . ), Show Limits( 1 )};
specs["LSL"] = dtlim:LSL[limrow[1]];
specs["USL"] = dtlim:USL[limrow[1]];
Column( dtsplitmeas, Char( cols[i] ) ) << set property( "spec limits", Eval( specs ) );
//this assumes that the spec_col_names are exactly the same in both tables
Eval(EvalExpr(
Column( dtsplitmeas, char(cols[i])) << Set Property("Range Check",
LELE(Expr(dtrange:rangeA[limrow[1]]), Expr(dtrange:rangeB[limrow[1]]))
)
));
);
);再:列をループする[Range Check]その方法の一例を次に示します。
Names Default To Here( 1 );
dtsplitmeas = Data Table( "sample data" );
dtrange = Data Table( "_ RANGE CHECK_" );
// dtsplitmeas is the table that is split
cols = dtsplitmeas << get Column names( string );
// dtlim is _SPEC LIMITS_ .jmp attached to this thread
// dtrange is _RANGE CHECK_ .jmp attached to this thread
// Assign Spec Limit script
For( i = 1, i <= N Cols( dtsplitmeas ), i++,
rangerow = Try( (dtrange << get rows where( dtrange:SPEC_COL_NAMES == cols[i] ))[1], . );
If( Is Missing( rangeRow ) == 0,
Eval(
Substitute(
Expr(
Column( dtsplitmeas, Char( cols[i] ) ) <<
Range Check( LELE( __low__, __high__ ) )
),
Expr( __low__ ), dtrange:rangeA[rangerow],
Expr( __high__ ), dtrange:rangeB[rangerow]
)
)
);
);再:列をループする[Range Check]非常に高く評価。できるだけ早く試してみます。
D.
再:列をループする[Range Check]SPEC_COL_NAMESは各テーブルで同じなので、同じテーブルにrangeAとrangeBを追加して、spec_limitsに加えてそこから取得することができますか。
再:列をループする[Range Check]@txnelson
しばらく前に、さまざまな列を反復し、ジャーナルを作成し、グラフを作成してから、そのジャーナルを追加するという素晴らしいスクリプトを私に提供しました。
私は管理図と同じことをやろうと思っています、しかし、Yaxisのために87の異なる表現ができるかもしれません、しかし、私はあなたが限界と範囲チェックで同じ概念を適用できるかどうか疑問に思いますか?私たちのテストはより複雑になっています、そしてこのオリジナルの記事の場合、私は504のスクリーニング条件を持っています。417の計算された出力を持つ87のactaulテスト出力。
前もって感謝します
doDistrPlot = Function(
{dtsplitmeas, Yaxis },
Eval(
Substitute(
Expr(
gb = Control Chart Builder(
Size( 734, 854 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables(
Y( Eval( Yaxis )) // Is evaluated in the same manner as the limits and range check.
),
Chart( Position( 1 ), Limits( Sigma( "Moving Range" ) ) ),
Chart( Position( 2 ), Limits( Sigma( "Moving Range" ) ) )
)
)
)
);
(gb << Top Report )[Text Box( 1 )] << Delete;
Report( gb )[Outline Box( 1 )] << Set Title( Eval Insert( Yaxis ) );
);
cols = dtsplitmeas << get Column names( string );
jjr1 = New Window( "Journal Window", << Journal );
For( i = 1, i <= N Cols( dtsplitmeas ), i++,
Yaxis = dtlim << Get Rows Where( dtlim:SPEC_COL_NAMES == cols[i] );
doDistrPlot( dtsplitmeas, Yaxis );
jjr1 << Append( Report( gb ) );
gb << Close Window;
);再:列をループする[Range Check]Yaxisの1つの値に対してだけ関数を実行した場合、それはあなたの希望する管理図を与えてくれるのでしょうか?そうではないと思います。 Eval(Substitute(Expr()))インスタンスがありますが、置換要素が指定されていないため、機能するはずはありません。
あなたは関数を実行するために赤ちゃんのステップを踏む必要があり、それからループを追加し始めます。
しかし、最初に、私はあなたがスクリプトガイドを読むことにかなりの時間を費やす必要があると思います
ヘルプ==>本==>スクリプトガイド
再:列をループする[Range Check]繰り返しになりますが、あなたの助けに感謝します。ただし、このエラー「列 'RF_IN_4_LPF_THRUからBM_A_OUT S21状態1 @ 10.25GHzまでの範囲外のデータは欠損値に設定されます。持続する?
範囲を手動で設定したときに、このポップアップが表示されるのを覚えています... これはあなたがあなたの側でそれを走らせたときに起こりましたか?
注:私はまだエラーを受けています...