從兩個 jmp 檔案中加/減值你好,
@tx尼爾森@pmroz
我需要幫助來使用 JSL 中的參考值來偏移資料集
第一張表有參考價值

第二個表格包含測試條的測量值

我想從參考資料表中減去條帶 A 的平均值,然後加到資料集中
例如 :
步驟1。電流條 A 的平均值 = (10+3)/2 = 6.5。 因此,400 - 6.5 = 393.5,其他條帶也是如此
第2步。 將 393.5 加到條帶 A >> 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
);
);
);
品質和工藝工程回覆:從兩個 jmp 檔案中添加/減去值@tx尼爾森
你能確定出了什麼問題嗎
回覆:從兩個 jmp 檔案中添加/減去值@tx尼爾森
下面是缺少我期望的結果的畫面。 我附上了最終結果數據表
步驟如下:
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 );
););
回覆:從兩個 jmp 檔案中添加/減去值你的程式碼讓我感到困惑。當你有
對於每一行
資料表中的每個單獨行都會被處理。
當使用 Get RowWhere() 時,它僅傳遞資料一次。您能提供您期望的結果樣本嗎?
回覆:從兩個 jmp 檔案中添加/減去值吉姆有什麼建議嗎?
回覆:從兩個 jmp 檔案中添加/減去值謝謝, @tx尼爾森
我使用了 For every 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 );
););回覆:從兩個 jmp 檔案中添加/減去值“措施”的計算無法計算。您編寫了一行 JSL,假設它正在循環存取資料表,但沒有發生任何行循環。
回覆:從兩個 jmp 檔案中添加/減去值@tx尼爾森
道歉! 我附加了錯誤的文件。 以下是更新後的資料表。
我嘗試過,但結果不準確
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>
回覆:從兩個 jmp 檔案中添加/減去值快速瀏覽一下腳本,會彈出一些項目。
- 參考資料表不包含任何與資料表中的列名稱相符的測試名稱
- Get RowsWhere() 將無法運作。您是否正在嘗試尋找與 sitenum 相符的所有行?如果是這樣的話應該是
r = dt2 << get rows where(dt2:sitenumber == sitenum[1]);
回覆:從兩個 jmp 檔案中添加/減去值嗨吉姆@tx尼爾森,
快速提問:
我修改了 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>
回覆:從兩個 jmp 檔案中添加/減去值謝謝吉姆:)
回覆:從兩個 jmp 檔案中添加/減去值我根據語法問題而不是邏輯問題對馬克的程式碼進行了更改。我已經重新編寫了程式碼,我相信這會起作用
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 );
);
回覆:從兩個 jmp 檔案中添加/減去值嘿吉姆,
感謝您的更正,但它似乎也不起作用。

回覆:從兩個 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 );
);
回覆:從兩個 jmp 檔案中添加/減去值謝謝馬克。 程式碼似乎不起作用

回覆:從兩個 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 );
);