Tengo que manipular los datos usando varias fórmulas y almacenar el resultado en una columna final. Puedo aplicar la fórmula con éxito y almacenar datos en una nueva columna pero no en la misma columna.
Por ejemplo,
En esta tabla,

Estoy usando Fórmula (abs (Dividir (Efecto, Restar (USL, Media)) * 100)) para celdas donde los valores de USL están presentes y
Fórmula (abs (Dividir (Efecto, Restar (Media, LSL))) * 100) donde los valores de LSL están presentes. Pero para las celdas donde el nombre de la columna, LSL y USL están vacíos, quiero usar la fórmula: Fórmula (Dividir (abs (Efecto)), Media);
El guión en el que estoy trabajando actualmente es:
dtq = Open("path\formula.jmp");
a = dtq << New Column("Final", Formula(abs(Divide(Effect,Subtract( USL,Mean)))*100));
//);
//:Final << Formula(abs(Divide(Effect,Subtract( USL,Mean)))*100);
b = dtq << New Column("Final1",Formula(abs(Divide(Effect,Subtract( Mean,LSL)))*100));
If( Is Empty( dtq << ColumnName ),
:Final << Formula(Divide(abs(Effect)), Mean);
);
show(b);
La salida que obtengo ahora es:

mientras que quiero que los valores de Final1 estén en la misma columna. También,
esta parte de la secuencia de comandos:
If( Is Empty( dtq << ColumnName ),
:Final << Formula(Divide(abs(Effect)), Mean);
);
No muestra ningún error pero tampoco funciona. Gracias por cualquier ayuda.
@Dan_Obermiller Gracias por la solución. Tengo demasiadas tablas en las que quiero que se ejecute la misma fórmula, por lo que sería mejor si un script lo hiciera. Muchas gracias por la solución rápida aunque ...
Suponiendo que una fila nunca tendrá ambos: LSL y: USL como no faltante, esto manejará todos los casos que describió:
If(
!Is Missing( :LSL ), Abs( :Effect / (:Mean - :LSL) ) * 100,
!Is Missing( :USL ), Abs( :Effect / (:USL - :Mean) ) * 100,
Is Missing( :ColumnName ), Abs( :Effect ) / :Mean
)
Esto me parece un poco demasiado complejo. Todos los cálculos se pueden colocar en una sola columna de fórmula:
Si(
Falta (: LSL) y falta (: USL), Abs (: Efecto /: Media),
Falta (: LSL), Abs (: Efecto / (: USL -: Media)) * 100,
Falta (: USL), Abs (: Efecto / (: Media -: LSL)) * 100
)
No es necesario tener un script. Interactivamente se ve así:

Y da estos resultados:
