Re-binning basado en nuevos límites de especificaciónTengo una tabla con una serie de parámetros con límites de especificación y una columna de aprobación fallida.
Utilizo administrar límites de especificaciones para cambiar algunos de los límites y volver a cargarlos en las columnas de la tabla.
Bien hasta ahora.
Pero ahora quiero volver a clasificar todos los dispositivos (es decir, volver a determinar Pasar y Fallar) en función de los nuevos límites de especificaciones.
Dado que hay muchos, muchos parámetros, escribir una fórmula para hacer esto sería difícil de manejar y tomaría bastante tiempo.
Podría escribir un script para hacerlo (determinando las columnas con límites de especificación y creando una columna de fórmula basada en eso).
Pero, ¿hay algo integrado en JMP para hacer esto?
Tabla de datosOtroRe: Re-binning basado en nuevos límites de especificaciónGracias. Esto funcionó bien.
También construí una expresión en el ciclo del script para usarla como fórmula para calcular el resultado general de aprobación o falla.Re: Re-binning basado en nuevos límites de especificaciónNo tengo conocimiento de una herramienta de agrupamiento de JMP basada en límites de especificaciones, pero aquí hay una pieza de código muy eficiente que realiza el agrupamiento.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
colNames = dt << get column names( continuous, string );
For( i = 1, i <= N Items( colNames ), i++,
Clear Symbols( specs );
specs = Column( dt, colNames[i] ) << get property( "Spec Limits" );
If( Is Empty( specs ) == 0,
dt << New Column( colNames[i] || " Pass_Fail", character, set each value( "Fail" ) );
theRows = dt << get rows where( Eval( specs["LSL"] ) <= As Column( dt, colNames[i] ) <= Eval( specs["USL"] ) );
If( N Rows( theRows ),
Column( dt, colNames[i] || " Pass_Fail" )[theRows] = "Pass"
);
);
);
Re: Re-binning basado en nuevos límites de especificación@txnelson
Hola Jim,
Estoy tratando de modificar el script que proporcionaste aquí.
estoy fallando...
Me gustaría tener una sola columna adicional que recopile las categorías de errores. La categoría fallida debe mostrar la primera columna fallida. Por lo tanto, hago un bucle inverso con la intención de sobrescribir todas las categorías de errores posteriores.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
dt << New Column( "First_Failed_Test", character, set each value( "Pass" ) );
colNames = dt << get column names( continuous, string );
For( i = N Items( colNames ), i >= 1, i--,
Clear Symbols( specs );
specs = Column( dt, colNames[i] ) << get property( "Spec Limits" );
If( Is Empty( specs ) == 0 | Eval( specs["LSL"] ) != Eval( specs["USL"]) ,
theRows = dt << get rows where( Eval( specs["LSL"] ) >= As Column( dt, colNames[i] ) >= Eval( specs["USL"] ) );
If( N Rows( theRows ),
Column( dt, "First_Failed_Test" )[theRows] = colNames[i]
);
);
);
¿Ves lo que está mal con el guión?
Re: Re-binning basado en nuevos límites de especificaciones theRows = dt << get rows where( Eval( specs["LSL"] ) >= As Column( dt, colNames[i] ) | As Column( dt, colNames[i] ) >= Eval( specs["USL"] ) );
¡Lo tengo!
Re: Re-binning basado en nuevos límites de especificaciónCreo que el siguiente script es un mejor enfoque para encontrar la prueba First Fail.Este script crea una nueva columna y la completa con el nombre de la columna First Fail

Names Default To Here( 1 );
dt=open("$SAMPLE_DATA/semiconductor capability.jmp");
USLVals = LSLVals = [];
For( i = 5, i <= N Cols( dt ), i++,
USLVals = USLVals || Matrix( (Column( dt, i ) << get property( spec limits ))["USL"] );
LSLVals = LSLVals || Matrix( (Column( dt, i ) << get property( spec limits ))["LSL"] );
);
dt << New Column( "First Fail", character );
For( i = 1, i <= N Rows( dt ), i++,
theMin = Min(
Min( Loc( (USLVals < dt[i, Index( 5, N Cols( dt ) - 1 )]) ) ),
Min( Loc( (dt[i, Index( 5, N Cols( dt ) - 1 )]) < LSLVals ) )
);
:First Fail[i] = Column( dt, theMin + 4 ) << get name;
);
Re: Re-binning basado en nuevos límites de especificación¡Gracias, Jim! Definitivamente es mucho más rápido.
¿Es este enfoque con matriz capaz de manejar excepciones como "No considerar columnas donde USL = LSL" o "Columnas sin límites de especificación"?
¿Necesito crear una subtabla con columnas válidas (subconjunto personalizado de columnas y exclusión automática de columnas por condiciones "no válidas") primero y luego aplicar el script propuesto y actualizar el origen con la columna de resultados? --> ¿Es una forma eficiente de codificar?
Re: Re-binning basado en nuevos límites de especificacionesTu observación es correcta.El código que proporcioné asume que todas las columnas tienen límites de especificación.Su sugerencia de crear un subconjunto que contenga solo columnas completamente calificadas es una forma de manejarlo.Y sería una buena manera.
Otra alternativa sería agregar al código proporcionado, la capacidad de identificar las columnas que no tienen límites de especificación y simplemente omitirlas.
De cualquier manera funcionará.