Reclassement basé sur les nouvelles limites des spécificationsJ'ai un tableau avec un certain nombre de paramètres avec des limites de spécifications et une colonne de réussite et d'échec.
J'utilise Gérer les limites des spécifications pour modifier certaines limites et les recharger dans les colonnes du tableau.
OK jusqu'à présent.
Mais maintenant, je souhaite regrouper tous les appareils (c'est-à-dire re-déterminer la réussite et l'échec) en fonction des nouvelles limites des spécifications.
Comme il existe de très nombreux paramètres, l'écriture d'une formule pour ce faire serait lourde et prendrait beaucoup de temps.
Je pourrais écrire un script pour le faire (en déterminant les colonnes avec des limites de spécifications et en créant une colonne de formule basée sur cela).
Mais y a-t-il quelque chose de intégré dans JMP pour faire cela ?
Études de consommation et de marchéRe : Re-binning basé sur de nouvelles limites de spécificationsVotre observation est correcte.Le code que j'ai fourni suppose que toutes les colonnes ont des limites de spécifications.Votre suggestion de créer un sous-ensemble contenant uniquement des colonnes entièrement qualifiées est une façon de le gérer.Et ce serait un bon moyen.
Une autre alternative serait d'ajouter au code fourni la possibilité d'identifier les colonnes qui n'ont pas de limites de spécifications et de simplement les contourner.
Quoi qu’il en soit, cela fonctionnera.
Re : Re-binning basé sur de nouvelles limites de spécificationsMerci, Jim! C'est certainement beaucoup plus rapide.
Cette approche avec matrice est-elle capable de gérer des exceptions telles que « Ne pas considérer les colonnes où USL=LSL » ou « Colonnes sans limites de spécifications » ?
Dois-je d'abord créer une sous-table avec des colonnes valides (sous-ensemble personnalisé de colonnes et exclusion automatique des colonnes par des conditions « non valides »), puis appliquer le script proposé et mettre à jour l'origine avec la colonne de résultat ? --> Est-ce un moyen efficace de coder ?
Re : Re-binning basé sur de nouvelles limites de spécificationsJe pense que le script suivant est une meilleure approche à adopter pour trouver le test du premier échec.Ce script crée une nouvelle colonne et remplit la colonne avec le nom de la colonne Premier échec.

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 basé sur de nouvelles limites de spécifications theRows = dt << get rows where( Eval( specs["LSL"] ) >= As Column( dt, colNames[i] ) | As Column( dt, colNames[i] ) >= Eval( specs["USL"] ) );
J'ai compris!
Re : Re-binning basé sur de nouvelles limites de spécifications@txnelson
Salut Jim,
J'essaie de modifier le script que vous avez fourni ici.
J'échoue...
J'aimerais avoir une seule colonne supplémentaire qui rassemble les catégories d'échec. La catégorie d'échec doit afficher la première colonne d'échec. Par conséquent, je boucle l'inverse avec l'intention d'écraser toutes les catégories d'échec suivantes.
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]
);
);
);
Voyez-vous ce qui ne va pas avec le script ?
Re : Re-binning basé sur de nouvelles limites de spécificationsMerci. Cela a bien fonctionné.
J'ai également créé une expression dans la boucle de script à utiliser comme formule pour calculer le résultat global réussite-échec.Re : Re-binning basé sur de nouvelles limites de spécificationsJe ne connais pas d'outil de regroupement JMP basé sur les limites des spécifications, mais voici un morceau de code très efficace qui effectue le regroupement.
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"
);
);
);