嘿大家,
我正在尝试将列名称输入过程能力平台,并将 2 正态混合分布设置为默认值。
所以首先我得到列名
(例如
)
碰撞={};
collist=dt3 << 获取列名称("numeric");
然后我循环遍历能力平台中的列:
nw=new window("capability analysis",
for(i=1, i<=n items(collist),i++,
dt3<<PROCESS capability=""></PROCESS>
<P> </P>
<P>但是,它无法识别分布部分选择,因此默认为“正常”,并且不检查我感兴趣的其他分布:</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="shampton82_1-1666474952469.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="shampton82_1-1666474952469.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/46513i65243B0FD8860575/shampton82_1-1666474952469.png" role="button" title="shampton82_1-1666474952469.png" alt="shampton82_1-1666474952469.png" /></span></SPAN></P>
<P> </P>
<P>感谢您的任何意见!</P>
<P> </P>
<P>史蒂夫</P>
<P> </P>很可能还有其他方法可以处理此问题,但这是一种选择。 我不得不稍微重写代码,因为我没有您的示例数据,并且要让它工作需要一些调试。 这似乎对列的格式非常严格(很可能是由于 & Dist()),所以我做了一些 Expr(NameExpr(AsColumn(Expr()))) 来获得正确的列引用
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
col_list = dt << Get Column Names(Continuous, String); // Note, these are as strings!
col_list = col_list[1::5];
nw = New Window("Capability Analysis",
vlb_collector = V List Box()
);
col_name = col_list[1];
create_capability_expr = Expr(
col_ref = Expr(NameExpr(AsColumn((Expr(col_name)))));
Eval(EvalExpr(
pc = dt << Process Capability(
Process Variables(Expr(col_ref) & Dist(Mixture of 2 Normals)),
Moving Range Method(Average of Moving Ranges),
Nonnormal Capability Method("Z-Score"n),
Johnson Distribution Fit Method(Maximum Likelihood),
Individual Detail Reports(1),
Capability Box Plots(0),
Goal Plot(0),
Capability Index Plot(0),
Process Performance Plot(0)
)
));
Eval(EvalExpr(
pc << {(Expr(col_ref) & Dist(Mixture of 2 Normals))<< Process Capability Analysis(Compare Distributions(1, <<FIT normal=""></FIT>

使用 Eval Insert、Eval Expr、Parse 和 Substitute 将一个表达式插入另一个表达式强烈建议通读帖子,它对调试也有很大帮助,因为您可以只运行 EvalExpr()) 部分并在评估它之前查看表达式将是什么
编辑:
当我必须对列及其引用做任何事情时,我“总是”以列名作为字符串开始,然后我对 Column()、As Column()、Name Expr()、Expr() 做我必须做的事情......以及这些的一些组合。 我觉得这是最健壮的方法,最容易调试,大部分时间都可以工作,并且起点始终相同(列的名称为字符串)。 它可能看起来不是最干净的,但在尝试引用 JMP 中的列时我并不在意,因为代码的清洁度通常不是最大的问题。
效果很好,并且通过您的代码和链接的帖子学到了一些新技巧!谢谢您的帮助!
史蒂夫