Neuklassifizierung basierend auf neuen SpezifikationsgrenzenIch habe eine Tabelle mit einer Reihe von Parametern mit Spezifikationsgrenzen und einer Spalte „Bestanden nicht bestanden“.
Ich verwende „Manage Spec limits“, um einige der Grenzwerte zu ändern und sie in die Spalten der Tabelle neu zu laden.
Okay so weit.
Aber jetzt möchte ich alle Geräte basierend auf den neuen Spezifikationsgrenzen neu einteilen (dh Pass und Fail neu bestimmen).
Da es sehr viele Parameter gibt, wäre das Schreiben einer Formel dafür umständlich und würde viel Zeit in Anspruch nehmen.
Ich könnte dafür ein Skript schreiben (die Spalten mit Spezifikationsgrenzen bestimmen und darauf basierend eine Formelspalte erstellen).
Aber ist in JMP irgendetwas dafür eingebaut?
Verbraucher- und MarktforschungBetreff: Neuklassifizierung basierend auf neuen SpezifikationsgrenzenIhre Beobachtung ist richtig.Der von mir bereitgestellte Code geht davon aus, dass für alle Spalten Spezifikationsgrenzen gelten.Ihr Vorschlag, eine Teilmenge zu erstellen, die nur vollständig qualifizierte Spalten enthält, ist eine Möglichkeit, damit umzugehen.Und es wäre ein guter Weg.
Eine andere Alternative wäre, dem bereitgestellten Code die Möglichkeit hinzuzufügen, die Spalten zu identifizieren, für die es keine Spezifikationsbeschränkungen gibt, und diese einfach zu umgehen.
So oder so wird es funktionieren.
Betreff: Neuklassifizierung basierend auf neuen SpezifikationsgrenzenDanke, Jim! Es ist definitiv viel schneller.
Ist dieser Ansatz mit Matrix in der Lage, Ausnahmen wie „Spalten mit USL=LSL nicht berücksichtigen“ oder „Spalten ohne Spezifikationsbeschränkungen“ zu behandeln?
Muss ich zuerst eine Untertabelle mit gültigen Spalten erstellen (benutzerdefinierte Teilmenge von Spalten und automatischer Ausschluss von Spalten durch „ungültige“ Bedingungen) und dann das vorgeschlagene Skript anwenden und den Ursprung mit der Ergebnisspalte aktualisieren? -> Ist es eine effiziente Art zu programmieren?
Betreff: Neuklassifizierung basierend auf neuen SpezifikationsgrenzenIch denke, das folgende Skript ist ein besserer Ansatz für Sie, um den First Fail-Test zu finden.Dieses Skript erstellt eine neue Spalte und füllt die Spalte mit dem Namen der Spalte „Erster Fehler“.

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;
);
Betreff: Neuklassifizierung basierend auf neuen Spezifikationsgrenzen theRows = dt << get rows where( Eval( specs["LSL"] ) >= As Column( dt, colNames[i] ) | As Column( dt, colNames[i] ) >= Eval( specs["USL"] ) );
Ich habe es!
Betreff: Neuklassifizierung basierend auf neuen Spezifikationsgrenzen@txnelson
Hallo Jim,
Ich versuche, das von Ihnen hier bereitgestellte Skript zu ändern.
Ich versage...
Ich hätte gerne eine einzige zusätzliche Spalte, in der die Fehlerkategorien gesammelt werden. In der Fehlerkategorie sollte die erste fehlerhafte Spalte angezeigt werden. Daher führe ich eine Rückwärtsschleife mit der Absicht durch, alle nachfolgenden Fehlerkategorien zu überschreiben.
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]
);
);
);
Sehen Sie, was mit dem Drehbuch nicht stimmt?
Betreff: Neuklassifizierung basierend auf neuen SpezifikationsgrenzenDanke. Das hat gut funktioniert.
Außerdem habe ich in der Skriptschleife einen Ausdruck erstellt, der als Formel zur Berechnung des gesamten Pass-Fail-Ergebnisses verwendet werden kann.Betreff: Neuklassifizierung basierend auf neuen SpezifikationsgrenzenMir ist kein auf Spec Limits basierendes JMP-Binning-Tool bekannt, aber hier ist ein sehr effizienter Code, der das Binning durchführt.
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"
);
);
);