Hola a todos,
Estoy tratando de obtener los nombres de las columnas en la plataforma de capacidad del proceso y hacer que establezca la distribución de mezcla normal de 2 como predeterminada.
Primero obtengo los nombres de las columnas.
(p.ej
)
colista={};
collist=dt3 << Obtener nombres de columnas("numeric");
luego recorro las columnas en la plataforma de capacidades:
nw=new window("capability analysis",
for(i=1, i<=n items(collist),i++,
dt3<<PROCESS capability=""></PROCESS>
<P> </P>
<P>Sin embargo, no reconoce la selección de la porción de distribución y, por lo tanto, toma el valor predeterminado Normal y no verifica las otras distribuciones que me interesan:</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>¡Gracias por cualquier aporte!</P>
<P> </P>
<P>esteban</P>
<P> </P>Lo más probable es que haya otras formas de manejar esto, pero aquí hay una opción. Tuve que reescribir un poco el código, porque no tenía sus datos de ejemplo y hacer que esto funcione requiere algo de depuración. Esto parece ser bastante estricto con el formato de las columnas (probablemente debido a & Dist()), así que hice algo de Expr(NameExpr(AsColumn(Expr()))) para obtener las referencias de columna de aspecto correcto
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>

Inserte una expresión en otra usando Eval Insert, Eval Expr, Parse y Substitute es muy recomendable leer la publicación, ayuda enormemente con la depuración también porque puede ejecutar la parte EvalExpr()) y ver cuál será la expresión antes de evaluarla
Editar:
Cuando tengo que hacer algo con columnas y sus referencias, "siempre" empiezo con los nombres de las columnas como una cadena y luego hago lo que tengo que hacer con Column(), As Column(), Name Expr(), Expr()... y alguna combinación de esos. Siento que este es el método más robusto, el más fácil de depurar, funciona la mayor parte del tiempo y el punto de partida es siempre el mismo (nombre de columna como cadena). Puede que no parezca el más limpio, pero realmente no me importa cuando intento hacer referencia a columnas en JMP, ya que la limpieza del código no suele ser el mayor problema con eso.
¡Eso funcionó muy bien y aprendí algunos trucos nuevos con su código y la publicación vinculada!¡Gracias por la ayuda!
Steve