使用 For 循环创建拟合组二元图我想要一个简单的 for 循环来创建与没有 for 循环相同的图表,而不是使用硬编码的列名作为输入。
dt = Open("C:\Program Files\SAS\JMP\15\Samples\Data\semiconductor capability.jmp");
Y_parameters = {"NPN1", "NPN2", "NPN3"};
X_parameters = {"PNP1", "PNP2", "PNP3"};
Fit Group(
//For i:
//For j:
Bivariate( Y( As Column(dt, Y_parameters[i]) ), X( As Column(dt, X_parameters[j])) ),
//end For j:
//end For i
//Want to replace the hard coded Y and X parameters with above for loop
Bivariate( Y( :NPN1 ), X( :PNP1 ) ),
Bivariate( Y( :NPN1 ), X( :PNP2 ) ),
Bivariate( Y( :NPN1 ), X( :PNP3 ) ),
Bivariate( Y( :NPN2 ), X( :PNP1 ) ),
Bivariate( Y( :NPN2 ), X( :PNP2 ) ),
Bivariate( Y( :NPN2 ), X( :PNP3 ) ),
Bivariate( Y( :NPN3 ), X( :PNP1 ) ),
Bivariate( Y( :NPN3 ), X( :PNP2 ) ),
Bivariate( Y( :NPN3 ), X( :PNP3 ) ),
<<{Arrange in Rows( 3 )}
);脚本编写回复:使用 For 循环创建拟合组二元图如果您想获得所有组合,我认为您可以使用
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
Y_parameters = {"NPN1", "NPN2", "NPN3"};
X_parameters = {"PNP1", "PNP2", "PNP3"};
Fit Group(
Bivariate( Y(Eval(Y_parameters)), X(Eval(x_parameters))),
<<{Arrange in Rows( 3 )}
);
回复:使用 For 循环创建拟合组二元图一如既往地感谢您的建议。
您是否有关于获取某些货币对图表的建议。 比如NPN1 vs PNP1和NPN2 vs PNP2?回复:使用 For 循环创建拟合组二元图表我很可能会用两个列表(或关联数组)然后循环来完成。我想我什至不会使用 Fit Group,除非我真的必须这样做,并且只是用展示盒创建它们。
您也可以尝试使用表达式,但这很快就会变得混乱和复杂(至少这个解决方案不像我想使用的那样强大,我只是尝试了不同的东西并让它工作):
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
Y_parameters = {"NPN1", "NPN2", "NPN3"};
X_parameters = {"PNP1", "PNP2", "PNP3"};
fg_expr = Expr(
dt << Fit Group(test, <<{Arrange in Rows(3)})
);
biv_expr = Expr({});
For(i = 1, i <= N Items(Y_parameters),i++,
next_biv = Eval Expr(Bivariate(Y(Column(Expr(Y_parameters[i]))), X(Column(Expr(X_parameters[i])))));
Insert Into(biv_expr, Name Expr(next_biv));
);
Substitute Into(fg_expr, Expr(test), Expr(EvalList(NameExpr(biv_expr))));
Show(Name Expr(fg_expr));
fg_expr;
回复:使用 For 循环创建拟合组双变量图表@jthi @Wendy_Murphrey我一直在遵循这个解决方案。不太确定如何使用 eval expr。我正在尝试循环半导体晶圆的参数列。由于某种原因,关联数组对我来说不起作用(我使用的是 JMP pro 18),所以我选择了列表方法。非常感谢你的帮助!谢谢
startcol = 37;
endCol = N Cols(dt);
For(t = startCol, t <= endCol, t++,
Insert Into(targetList, AllColList[t])
);
Summarize(dt, newlist = by(:waferno));
fg_expr = Expr(
dt << Fit Group(test, <<{Arrange in Rows(1)}, Order by Goodness of Fit)
);
ow_expr = Expr({});
currentlabel = targetList[1];
currentwafer = newlist[1];
For(ilabel = 1, ilabel <= 2, ilabel++,
nextlabel = targetList[ilabel + 1];
Show(nextlabel);
For(iwfr = 1, iwfr <= 2, iwfr++,
nextwafer = newlist[iwfr + 1];
Show(nextwafer);
//nw2=vl<
<APPEND></APPEND>