嘿大家,
我正在嘗試將列名稱輸入製程能力平台,並將 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 中的列時我並不在意,因為代碼的清潔度通常不是最大的問題。
效果很好,並且通過您的代碼和鏈接的帖子學到了一些新技巧!謝謝您的幫助!
史蒂夫