2 つの jmp ファイルから値を加算/減算するこんにちは、
@txnelson @pmroz
JSL の参照値を使用してデータセットをオフセットするのに助けが必要です
最初の表には参考値が含まれています

2 番目の表には、ストリップでテストされた測定値が含まれています

参照データテーブルからストリップ A の平均値を減算し、データセットに追加したいと考えています。
例えば :
ステップ1。電流の場合のストリップ A の平均値 = (10+3)/2 = 6.5。 したがって、400 - 6.5 = 393.5、他のストリップについても同様です
ステップ2。 ストリップ A の 2 番目のデータ テーブルに 393.5 を追加 >> 393.2 + 10 = 403.2、他のストリップについても同様
最終的なテーブルには次の値が含まれている必要があります。

詳細は添付ファイルを参照してください。
助けてくれてありがとう!
これは私が試したことです:
Names Default To Here( 1 );
dt = Current data table();
dtOffset = Open(Limits);
colList = dt << get column names(string);
For( i = 1, i <= N Items( colList ), i++,
theRow = dtOffset << get rows where( dtOffset:Tests == colList[i] );
show(i,nrows(therow));
If( N Rows( theRow ) == 1,
offset = dtOffset:Offset[theRow[1]];
For( k = 1, k <= N Rows( dt ), k++,
Column( dt, i )[k] = Column( dt, i )[k] + offset
);
);
);
品質およびプロセスエンジニアリングRe: 2 つの jmp ファイルから値を加算/減算する@txnelson
何が問題なのか特定できますか
Re: 2 つの jmp ファイルから値を加算/減算する@txnelson
以下は、私が期待している結果の画面です。 最終結果データ表を添付しました
手順は次のとおりです。
1. 読み取りデータテーブルと参照データテーブル
2. 新しいウィンドウを生成してサイト番号を選択します。
3. ユーザー入力 (サイト番号 1 または 2) に基づいて、それらのデータを参照データ テーブルの値に合わせます。
ウェーハIDを平均し、オフセットをメインデータテーブルに適用します

Names Default To Here( 1 );
Clear globals();
Clear log();
dt1 = Data table( "Reference data table" );
dt2 = Current data table(); /// Select Data table.jmp
For(i=1,i<=nrows(dt1),i++,
theTest = dt1:Tests[i];
try(column(dt2,theTest) << set property("TheMean", dt1:Mean[i]));
);
New window( "", modal,
ct = checkbox({"1","2"}),
Buttonbox ("Ok",
get = ct << Get Selected ();
)
);
sitenum = Transform Each({str}, get, Num(str));
Col_List1 = dt2 << Get Column Names( "String" );
//if (!contains(Col_List1, "SiteNumber"),
// dt2 <<NEW column=""></NEW> r = dt2 << get rows where(dt2:sitenumber == sitenum[1]); /// something needs to change here ****&&&**&&&&**&&&
//mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
mean = column(dt2, Col_list1[c]) << get property("theMean");
//measure = mean - Col Mean( If( dt2:Strips == dt2:Strips[r], Column( dt2, c ), . ) );
measure = mean - Col Mean(as Column( dt2, c ),:Wafer ID);
theMatrix = theMatrix || Column( dt2, c )[r] + measure;
);
Column( dt2, c ) << Set Values( theMatrix );
););
Re: 2 つの jmp ファイルから値を加算/減算するあなたのコードは私にはわかりにくいです。持っているとき
各行について
データテーブル内の個別の行がそれぞれ処理されます。
Get Row Where() を使用すると、データは 1 回だけ渡されます。期待される結果のサンプルを提供してもらえますか?
Re: 2 つの jmp ファイルから値を加算/減算するジムにアドバイスはありますか?
Re: 2 つの jmp ファイルから値を加算/減算するありがとう、 @txnelson
For each rows 構文を使用しましたが、ループが完了するまでに 40 分かかります。 別の方法はありますか?
For( c = 1, c <= N Col( dt2 ) -1, c++,
theMatrix = [];
name = Column( Col_List1[c] ) << Get name;
if (Contains( Col_List1[c], "Current"),
//For( r = 1, r <= N Rows( dt2 ), r++,
For Each Row(
<BR /> r = dt2 << get rows where(dt2:sitenumber == sitenum[1]);
//mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
mean = column(dt2, Col_list1[c]) << get property("theMean");
//measure = mean - Col Mean( If( dt2:Strips == dt2:Strips[r], Column( dt2, c ), . ) );
measure = mean - Col Mean(as Column( dt2, c ),:Wafer ID);
theMatrix = theMatrix || Column( dt2, c )[r] + measure;
);
Column( dt2, c ) << Set Values( theMatrix );
););Re: 2 つの jmp ファイルから値を加算/減算する「メジャー」の計算はできません。データテーブルをループしていると想定する JSL 行を作成しましたが、行のループは発生していません。
Re: 2 つの jmp ファイルから値を加算/減算する@txnelson
謝る! 間違ったファイルを添付してしまいました。 以下は更新されたデータテーブルです。
試してみましたが、結果は正確ではありませんでした
Names Default To Here( 1 );
Clear globals();
Clear log();
dt1 = Data table( "Reference data table" );
dt2 = Current data table(); /// Select Data table.jmp
For(i=1,i<=nrows(dt1),i++,
theTest = dt1:Tests[i];
try(column(dt2,theTest) << set property("TheMean", dt1:Mean[i]));
);
New window( "", modal,
ct = checkbox({"1","2"}),
Buttonbox ("Ok",
ft = ct << Get Selected Indices();
), ct << set all(1);
);
sitenum = {};
Insert Into (sitenum, ft);
Col_List1 = dt2 << Get Column Names( "String" );
//if (!contains(Col_List1, "SiteNumber"),
// dt2 <<NEW column=""></NEW>
Re: 2 つの jmp ファイルから値を加算/減算するスクリプトをざっと見てみると、いくつかの項目が表示されます。
- 参照データ テーブルには、データ テーブルの列名と一致するテスト名が含まれていません。
- Get Rows Where() は機能しません。sitenum に一致するすべての行を検索しようとしていますか?もしそうならそうあるべきだ
r = dt2 << get rows where(dt2:sitenumber == sitenum[1]);
Re: 2 つの jmp ファイルから値を加算/減算するこんにちは、ジム@txnelson 、
簡単な質問:
jsl スクリプトを変更し、チェック ボックスの選択に基づいて行をフィルタリングしたいと考えています。
以下のスクリプトは新しいウィンドウを作成し、ユーザーにサイト番号のチェックボックスを選択するように求めます。
SiteNumber の選択に平均オフセットのみを追加したいと考えています。
SiteNumber 1 が選択されている場合は、それらの行のみを配置します。 両方のファイルを添付しました
get rows where を使用してみましたが、結果は正確ではないようです。 いくつかの提案を探しています
Names Default To Here( 1 );
Clear globals();
Clear log();
dt1 = Data table( "Reference data table" );
dt2 = Current data table(); /// Select Data table.jmp
For(i=1,i<=nrows(dt1),i++,
theTest = dt1:Tests[i];
try(column(dt2,theTest) << set property("TheMean", dt1:Mean[i]));
);
New window( "", modal,
ct = checkbox({"1","2"}),
Buttonbox ("Ok",
ft = ct << Get Selected Indices();
), ct << set all(1);
);
sitenum = {2};
//Insert Into (sitenum, ft);
Col_List1 = dt2 << Get Column Names( "String" );
//if (!contains(Col_List1, "SiteNumber"),
// dt2 <<NEW column=""></NEW>
Re: 2 つの jmp ファイルから値を加算/減算するありがとうジム:)
Re: 2 つの jmp ファイルから値を加算/減算する私はロジックの問題ではなく、構文の問題に基づいて Mark のコードを変更していました。コードを作り直したので、これでうまくいくと思います
Names Default To Here( 1 );
dt1 = open( "Reference data.jmp" );
dt2 = open( "Data set.jmp" );
For( c = 1, c <= N Col( dt2 ) -1, c++,
theMatrix = [];
name = Column( dt2, c ) << Get Name;
For( r = 1, r <= N Rows( dt2 ), r++,
mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
measure = mean - Col Mean( If( dt2:Strips == dt2:Strips[r], Column( dt2, c ), . ) );
theMatrix = theMatrix || Column( dt2, c )[r] + measure;
);
Column( dt2, c ) << Set Values( theMatrix );
);
Re: 2 つの jmp ファイルから値を加算/減算するやあ、ジム、
修正していただきありがとうございますが、それも機能しなかったようです。

Re: 2 つの jmp ファイルから値を加算/減算するあなたは間違った「(」でした。こちらが修正版です
Names Default To Here( 1 );
dt1 = Open( "Reference data.jmp" );
dt2 = Open( "Data set.jmp" );
For( c = 1, c <= N Col( dt2 ), c++,
name = Column( dt2, c ) << Get Name;
mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
measure = mean - Column( dt2, c ) << Get As Matrix;
Column( dt2, c ) << Set Values( measure );
);
Re: 2 つの jmp ファイルから値を加算/減算するありがとうマーク。 コードが機能しないようです

Re: 2 つの jmp ファイルから値を加算/減算するこの例を試してみてください。
Names Default to Here( 1 );
dt1 = Open( "Reference data.jmp" );
dt2 = Open( "Data set.jmp" );
For( c = 1, c <= N Col( dt2 ), c++,
name = Column( dt2, c ) << Get Name;
mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
measure = mean - (Column dt2, c ) << Get As Matrix);
Column( dt2, c) << Set Values( measure );
);