¿Cómo crear una secuencia de comandos para aplicar los valores límite de especificaciones que aparecen en una columna a su propia propiedad en función de las etiquetas de otras columnas?Tengo datos entrantes similares a la tabla de datos adjunta.
Me gustaría (como ejemplo)
- guarde los valores de fila que aparecen (primero/arriba) en la columna Breakdown_5 contra las filas USL/LSL (bajo Etiqueta) para T5 (bajo TestStage) como límites en la propiedad de la columna Breakdown_5, de manera similar
- guarde los valores de fila que aparecen (primero/arriba) en la columna Resistance_7 contra las filas USL/LSL (bajo Etiqueta) para S7 (bajo TestStage) como límites en la propiedad de la columna Resistance_7
- guarde los valores de fila que aparecen (primero/arriba) en la columna Current_7 contra las filas USL/LSL (bajo Etiqueta) para S7 (bajo TestStage) como límites en la propiedad de la columna Current_7
- guarde los valores de fila que aparecen (primero/arriba) en la columna Current_11 contra las filas USL/LSL (bajo Etiqueta) para W11 (bajo TestStage) como límites en la propiedad de la columna Current_11
- guarde los valores de fila que aparecen (primero/arriba) en la columna Capacitance_6 contra las filas USL/LSL (bajo Etiqueta) para U6 (bajo TestStage) como límites en la propiedad de la columna Capacitance_6
En general, ¿cómo escribo un script en JSL para aplicar los límites de especificaciones correspondientes a las filas LSL/USL (bajo Etiqueta) que aparecen (primero/en la parte superior) debajo de las columnas de datos medidos (Desglose_#, Resistencia_#, Actual_#, etc.? on) correspondiente al TestStage# correcto, donde # se refiere al número de etapa de prueba.

Automatización y secuencias de comandosventanasRe: ¿Cómo crear una secuencia de comandos para aplicar los valores límite de especificación que aparecen en una columna a su propia propiedad en función de las etiquetas de otras columnas?Aquí hay un script que funciona con sus datos de muestra.
Names Default To Here( 1 );
dt = Data Table( "exampleDataSummary" );
// Find all numeric columns and place in a list
numColList = dt << get column names( numeric, string );
// Find the unique values of TestStage
Summarize( dt, tstStage = By( :TestStage ) );
// Loop across all test stages and match with response column
stageNumber = "";
For Each( {Stage}, tstStage,
stageNumber = Substr( Stage, 2 );
resCol = "";
For Each( {col}, numColList,
If( Word( -1, col, "_" ) == stageNumber,
resCol = col
);
// Get LSL and USL
If( resCol != "",
theLSL = Column( dt, resCol )[(dt << get rows where( :TestStage == Stage & :label == "LSL" ))[1]];
theUSL = Column( dt, resCol )[(dt << get rows where( :TestStage == Stage & :label == "USL" ))[1]];
Show( theLSL, theUSL );
Eval(
Substitute(
Expr(
Column( dt, resCol ) << set property( "Spec Limits", {LSL( _LSL_ ), USL( _USL_ )} )
),
Expr( _LSL_ ), theLSL,
Expr( _USL_ ), theUSL
)
);
);
);
);Re: ¿Cómo crear una secuencia de comandos para aplicar los valores límite de especificación que aparecen en una columna a su propia propiedad en función de las etiquetas de otras columnas?@txnelson Si gracias. El script funciona con el archivo de datos de ejemplo. Tengo dos preguntas.
1. Me acabo de dar cuenta de que los nombres de mis parámetros (columnas) medidos pueden tener la forma Resistance_Null_Port_7, Capacitance_Full_Plate_6, etc. Cómo cambiar el script cuando hay más de un guión bajo en los nombres de las columnas antes de que el número de TestStage llegue al final. Supongo que la implementación de la función Word () necesita cambiar, pero estoy luchando con ella (es un poco confuso no haberla usado antes).
2. ¿Cómo habilitar "Mostrar como líneas de referencia de gráfico" mediante programación para cada columna una vez que se aplican los límites? Sé cómo hacer esto manualmente a través de Administrar límites de especificaciones (). Estoy en JMP 16.2.
Re: ¿Cómo crear una secuencia de comandos para aplicar los valores límite de especificación que aparecen en una columna a su propia propiedad en función de las etiquetas de otras columnas?Vaya al Índice de secuencias de comandos para encontrar detalles sobre las diversas funciones que utilicé en la secuencia de comandos que proporcioné.A la función Word(), tal como la usé, no le importa cuántos "_" hay en los nombres.El primer término en la función Word(), tal como la estoy usando, es -1, que indica a la función que tome la primera palabra, comenzando desde el final de la cadena.
Para indicarle a JMP que muestre automáticamente los valores como líneas de referencia, el parámetro "Show()" en la especificación de límites de especificación.
Column( dt, resCol ) << set property( "Spec Limits", {LSL( _LSL_ ), USL( _USL_ ), Show(1)} )
Tómese el tiempo para estudiar el guión que le proporcioné, para ayudarle a avanzar y convertirse en un escritor de guiones más eficiente.
Re: ¿Cómo crear una secuencia de comandos para aplicar los valores límite de especificación que aparecen en una columna a su propia propiedad en función de las etiquetas de otras columnas?@txnelson Estoy estudiando tu código y gracias por explicar cómo funciona Word().
Hasta ahora, el script no funciona para mis datos reales (que solo tienen diferencias en los nombres de las columnas reales, es decir, con más guiones bajos).
El problema es que el script se ejecuta sin generar ningún error en mis datos reales y no hay nada en el registro a diferencia de cuando ejecuto el mismo script en la tabla de datos de ejemplo adjunta aquí. Así que no tengo nada a lo que aferrarme para depurar.
Ya había probado show (1) para mostrar los límites para habilitar "Mostrar como líneas de referencia de gráfico" mediante programación. Él no me funciona en JMP 16.2 usando los datos de ejemplo publicados aquí.
Intentaré depurar el script y volveré contigo si encuentro algo. Sería útil obtener algunos consejos para la depuración en ausencia de algo en el registro.
Re: ¿Cómo crear una secuencia de comandos para aplicar los valores límite de especificación que aparecen en una columna a su propia propiedad en función de las etiquetas de otras columnas?Mi error, cambia
mostrar(1)
a
mostrar límites(1)
Re: ¿Cómo crear una secuencia de comandos para aplicar los valores límite de especificación que aparecen en una columna a su propia propiedad en función de las etiquetas de otras columnas?@txnelson Necesario cambiar
Substr( )
para que el script funcione con mis datos reales. Sin embargo, show (1) todavía no muestra los límites cuando se traza una distribución para cualquier parámetro medido.
Lo siguiente tampoco funciona en mi JMP16.2, es decir, mostrar límites no está habilitado "Mostrar como líneas de referencia de gráfico" en las propiedades de la columna.
dt=Open("$SAMPLE_DATA/Process Measurements.jmp");
Column(dt, "Process 2")<<SET property=""></SET>Sin embargo, esto funciona.
Column( dt, resCol ) << set property( "Spec Limits", {LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )})