从两个 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 );
);