Salut tout le monde,
J'essaie d'introduire les noms de colonnes dans la plate-forme de capacité de processus et de lui faire définir la distribution des 2 mélanges normaux par défaut.
Donc d'abord je reçois les noms des colonnes
(par exemple
)
collist={};
collist=dt3 << Obtenir les noms de colonnes("numeric");
puis je parcoure les colonnes de la plateforme de capacités :
nw=new window("capability analysis",
for(i=1, i<=n items(collist),i++,
dt3<<PROCESS capability=""></PROCESS>
<P> </P>
<P>Cependant, il ne reconnaît pas la sélection de la partie de distribution et est donc par défaut sur Normal et ne vérifie pas les autres distributions qui m'intéressent :</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>Merci pour toute contribution !</P>
<P> </P>
<P>Steve</P>
<P> </P>Il existe très probablement d'autres façons de gérer cela, mais voici une option. J'ai dû réécrire un peu le code, car je n'avais pas vos données d'exemple et pour que cela fonctionne, il faut un peu de débogage. Cela semble être assez strict avec le format des colonnes (probablement à cause de & Dist()), j'ai donc fait quelques Expr(NameExpr(AsColumn(Expr()))) pour obtenir des références de colonnes correctes
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>

Insérer une expression dans une autre en utilisant Eval Insert, Eval Expr, Parse et Substitute est fortement suggéré de lire l'article, cela aide énormément au débogage également parce que vous pouvez simplement exécuter la partie EvalExpr()) et voir quelle sera l'expression avant de l'évaluer
Éditer:
Quand je dois faire quoi que ce soit avec des colonnes et leurs références, je commence "toujours" par les noms de colonnes sous forme de chaîne, puis je fais ce que je dois avec Column(), As Column(), Name Expr(), Expr()... et une combinaison de ceux-ci. J'ai l'impression que c'est la méthode la plus robuste, la plus facile à déboguer, fonctionne la plupart du temps et le point de départ est toujours le même (nom de la colonne sous forme de chaîne). Cela n'a peut-être pas l'air le plus propre, mais je ne me soucie pas vraiment d'essayer de référencer des colonnes dans JMP, car la propreté du code n'est généralement pas le plus gros problème avec cela.
Cela a très bien fonctionné et a appris quelques nouvelles astuces avec votre code et le message lié !Merci pour l'aide!
Steve