Endergebnis-Tabelle ProblemMr. txnelson war so freundlich, mir ein großartiges Skript zukommen zu lassen, das den Spalten Bestanden / Nicht Bestanden und schließlich ein endgültiges Bestanden / Nicht Bestanden basierend auf der gesamten Zeile zuweist. Ich möchte diese letzte Spalte in Unterspalten aufteilen und obwohl ich weiß, wie es konzeptionell gemacht werden kann, kann ich die korrekte Syntax nicht herausfinden.
Dieser Code findet das Minimum von ALLEN Spalten, ich möchte jedoch Teilmengen hinzufügen
Eval (Parse ("dt2 << New Column (\!" Row Pass / Fail \! ", Formel (If (Min (" || foundCols || ") == 1, 1, 0))");
Säulen:
Row Pass / Fail
Test_1 bestanden / nicht bestanden
Test_2 bestanden / nicht bestanden
Test_3a bestanden / nicht bestanden
Test_3b Pass / Fail
Test_3c Pass / Fail
Test_3d Pass / Fail
Test_3e bestanden / nicht bestanden
Test_4_State_1 Pass / Fail
Test_4_State_3 Pass / Fail
Test_4_State_4 Pass / Fail
colList = dt2 << Get Column Names( numeric, string );
foundCols = "";
For( i = 1, i <= N Items( colList ), i++,
Spec = Column( dt2, colList[i] ) << Get Property( "Spec Limits" );
dt2 << Clear Select;
If( Is Empty( Spec ) == 0,
dt2 << New Column( (Column( dt2, colList[i] ) << Get Name) || " Pass/Fail" );
If( Is Missing( Try( Spec["LSL"], . ) ) == 0,
dt2 << Select Where( As Column( dt2, colList[i] ) < Spec["LSL"] );
Try( Column( dt2, N Cols( dt2 ) )[dt2 << get selected rows] = 0 );
);
If( Is Missing( Try( Spec["USL"], . ) ) == 0,
dt2 << Select Where( As Column( dt2, colList[i] ) > Spec["USL"], Current Selection( "Extend" ) );
Try( Column( dt2, N Cols( dt2 ) )[dt2 << Get Selected Rows] = 0 );
);
dt2 << invert row selection;
Try( Column( dt2, N Cols( dt2 ) )[dt2 << Get Selected Rows] = 1 );
Column( dt2, N Cols( dt2 ) ) << Set Property( "Value Labels", {1 = "Pass", 0 = "Fail"} );
If( foundCols == "",
foundCols = ":Name(\!"" || (Column( dt2, colList[i] ) << Get Name) || " Pass/Fail\!")",
foundCols = foundCols || ", " || ":Name(\!"" || (Column( dt2, colList[i] ) << Get Name) || " Pass/Fail\!")"
);
);
);
Betreff: Finale Yield Table ProblemIn Ihrer Eval (Parse ()) - Anweisung ist ein einfacher Syntaxfehler aufgetreten. Ein ")" wurde weggelassen. Hier ist eine funktionierende Version
Eval( Parse( "dt2 << New Column( \!"Row Pass/Fail\!", Formula( If( Min(" || foundCols || " ) == 1, 1, 0 ) ) )" ) );Betreff: Finale Yield Table ProblemDanke. Wenn es Ihnen nichts ausmacht, können Sie mir bitte beim nächsten Teil helfen?
Dieser Code nimmt alle Spalten {foundCols}, in denen 'Pass / Fail' steht, findet den min-Wert und weist Pass oder Fail automatisch zu.
<SPAN class="token function">Eval</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Parse</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"dt2 << New Column( \!"Row Pass/Fail\!", Formula( If( Min("</SPAN> <SPAN class="token operator">||</SPAN> foundCols <SPAN class="token operator">||</SPAN> <SPAN class="token string">" ) == 1, 1, 0 ) ) )"</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>Wie würde man verschiedene Kombinationen der foundCols erhalten, zum Beispiel, ich möchte nur die Spalten mit Rx State 3?
foundCols = {:Name( "7200_VDD_Dig_Rx Pass/Fail" ),
:Name( "7200_Analog_Rx Pass/Fail" ),
:Name( "CH9 Rx State 3 Pass/Fail" ),
:Name( "CH8 Rx State 3 Pass/Fail" ),
:Name( "CH7 Rx State 3 Pass/Fail" ),
:Name( "CH6 Rx State 3 Pass/Fail" ),
:Name( "CH5 Rx State 3 Pass/Fail" ),
:Name( "CH4 Rx State 3 Pass/Fail" ),
:Name( "CH3 Rx State 3 Pass/Fail" ),
:Name( "CH2 Rx State 3 Pass/Fail" ),
:Name( "CH15 Rx State 3 Pass/Fail" ),
:Name( "CH14 Rx State 3 Pass/Fail" ),
:Name( "CH13 Rx State 3 Pass/Fail" ),
:Name( "CH12 Rx State 3 Pass/Fail" ),
:Name( "CH11 Rx State 3 Pass/Fail" ),
:Name( "CH10 Rx State 3 Pass/Fail" ),
:Name( "CH1 Rx State 3 Pass/Fail" ),
:Name( "CH0 Rx State 3 Pass/Fail" ),
:Name( "CH0 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH1 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH10 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH11 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH12 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH13 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH14 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH15 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH2 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH3 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH4 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH5 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH6 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH7 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH8 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "CH9 Rx State 4 Delta Amp Pass/Fail" ),
:Name( "7100_VDD_Dig_Tx Pass/Fail" ),
:Name( "7100_Analog_Tx Pass/Fail" ),
:Name( "CH0 Tx State 1 Pass/Fail" ),
:Name( "CH1 Tx State 1 Pass/Fail" ),
:Name( "CH10 Tx State 1 Pass/Fail" ),
:Name( "CH11 Tx State 1 Pass/Fail" ),
:Name( "CH12 Tx State 1 Pass/Fail" ),
:Name( "CH13 Tx State 1 Pass/Fail" ),
:Name( "CH14 Tx State 1 Pass/Fail" ),
:Name( "CH15 Tx State 1 Pass/Fail" ),
:Name( "CH2 Tx State 1 Pass/Fail" ),
:Name( "CH3 Tx State 1 Pass/Fail" ),
:Name( "CH4 Tx State 1 Pass/Fail" ),
:Name( "CH5 Tx State 1 Pass/Fail" ),
:Name( "CH6 Tx State 1 Pass/Fail" ),
:Name( "CH7 Tx State 1 Pass/Fail" ),
:Name( "CH8 Tx State 1 Pass/Fail" ),
:Name( "CH9 Tx State 1 Pass/Fail" ),
:Name( "801 Pass/Fail" ),
:Name( "802 Pass/Fail" ),
:Name( "803 Pass/Fail" ),
:Name( "804 Pass/Fail" ),
:Name( "805 Pass/Fail" ),
:Name( "806 Pass/Fail" ),
:Name( "807 Pass/Fail" ),
:Name( "821 Pass/Fail" )};
Betreff: Finale Yield Table ProblemIch würde nur interaktiv eine neue Spalte erstellen und dann in den Formel-Editor gehen und nur die Rx-Statusspalten auswählen, die ausgewertet werden sollen
Betreff: Finale Yield Table ProblemDas ist, was ich derzeit jedoch mache, weil das Analysieren mehrerer Produktlinien, die den gleichen Rx im Testnamen haben, von denen eine 300 verschiedene Bedingungen innerhalb dieses Rx hat, ich hoffte, dies dynamisch zu tun, so dass es über alle vorhandenen und kommenden Produkte hinweg funktionieren würde. .
Betreff: Finale Yield Table ProblemIch denke, was Sie tun können, ist, einfach eine neue Liste zu erstellen, die nur die Spalten mit dem Rx 3-Namen enthält, und dann eine neue Spalte mit dieser Liste zu erstellen, um Werte in der neuen Spalte festzulegen. So etwas wie:
newList = {};
For( i=1,i<=N Items(foundCols),i++,
If(contains(foundCols,"Rx 3"),
insert into( newList, foundCols[i]);
)
);
Eval( Parse( "dt2 << New Column( \!"Rx 3 Row Pass/Fail\!", Formula( If( Min(" || newList || " ) == 1, 1, 0 ) ) )" ) );Betreff: Finale Yield Table ProblemMir ist klar, dass ich bei meinem letzten Eintrag einen Fehler gemacht habe. Der Code zum Auffüllen der NewList muss folgendermaßen geändert werden:
newList = {};
For( i=1,i<=N Items(foundCols),i++,
If(contains(foundCols[i],"Tx"),
insert into( newList, foundCols[i]);
)
);
Versuchen Sie dies und sehen Sie, ob es hilft
Betreff: Finale Yield Table ProblemIch entschuldige mich, dass ich endlich Zeit habe, dies zu überdenken, seit ich es ursprünglich gepostet habe. Ich erhalte die Fehlermeldung "N Items () Argument muss eine Liste sein".
foundCols = ""; ist der Originalcode, nicht in einer Liste.
Hier ist, was ich denke, sollte passieren
listCols = { foundCols };
listCols = Eval List ( listCols );
Zu diesem Zeitpunkt habe ich alle foundCols in einer Liste, aber wenn ich das folgende Skript ausführen, wird newList nicht gefüllt.
newList = {};
For( i = 1, i <= N Items( listCols ), i++,
If( Contains( listCols, "TX" ),
Insert Into( newList, listCols[i]);
)
);
Danke im Voraus
Betreff: Finale Yield Table ProblemLeider ist es immer noch dasselbe Problem mit der Fehlermeldung "N Items () Argument muss eine Liste sein {579}"
Ich glaube, Sie haben diesen Code schon zu Beginn meiner Reise auf diesem Weg zur Verfügung gestellt.
Oh, und wir haben jetzt JMP 15, also wenn es einen anderen Weg gibt, bin ich ganz Ohr (Augen) ...
Danke dir
colsToPassFail = dt3 << get column names( numeric, String );
Show( colsToPassFail );
foundCols = "";
For( i = 1, i <= N Items( colsToPassFail ), i++,
Spec = Column( dt3, colsToPassFail[i] ) << Get Property( "Spec Limits" );
dt3 << Clear Select;
If( Is Empty( spec ) == 0,
dt3 << New Column( ( Column( dt3, colsToPassFail[i] ) << Get Name) || " Pass/Fail" );
If( Is Missing( Try( spec["LSL"], . ) ) == 0,
dt3 << Select Where( As Column( dt3, colsToPassFail[i] ) < spec["LSL"] );
Try( Column( dt3, N Cols( dt3 ) )[dt3 << Get Selected Rows] = 0 );
);
If( Is Missing( Try( spec["USL"], . ) ) == 0,
dt3 << Select Where( As Column( dt3, colsToPassFail[i] ) > spec["USL"], Current Selection( "extend" ) );
Try( Column( dt3, N Cols( dt3 ) )[dt3 << Get Selected Rows] = 0 );
);
dt3 << Invert Row Selection;
Try( Column( dt3, N Cols( dt3 ) )[dt3 << Get Selected Rows] = 1 );
Column( dt3, N Cols( dt3 ) ) << set property( "Value Labels", {1 = "Pass", 0 = "Fail"} );
If( foundCols == {},
foundCols = ":Name(\!"" || (Column( dt3, colsToPassFail[i] ) << Get Name) || " Pass/Fail\!")",
foundCols = foundCols || ", " || ":Name(\!"" || (Column( dt3, colsToPassFail[i] ) << Get Name) || " Pass/Fail\!")"
);
);
);
dt3 << Clear Select;
txList = {};
For( i = 1 ,i <= N Items( foundCols ), i++,
If( Contains( foundCols[i], "TX" ),
Insert Into( txList, foundCols[i]);
)
);Betreff: Finale Yield Table ProblemIch gehe davon aus, dass die fragliche Variable "FoundCols" ist. Sie setzen den Wert auf "", wodurch die Variable "FoundCols" eine Zeichenfolge und keine Liste ist. Dann überprüfen Sie später in Ihrem Code, ob die Variable "FoundCols" gleich {} ist, was nicht der Fall ist. Es ist gleich "". Wenn Sie "FoundCols" mit einer leeren Liste initialisieren möchten, geben Sie Folgendes an:
FoundCols = {};Betreff: Finale Yield Table ProblemIch musste ein bisschen kreativ werden, aber es hat es verstanden. Es sieht ein bisschen ungeschickt aus, aber es erledigt den Job. Vielen Dank
ycols_3 = dt3 << Get Column Names( Numeric, Continuous );
yPassFail = {};
For( i = 1 , i <= N Items( ycols_3 ), i++,
If( Contains( ycols_3[i], "Pass/Fail" ),
Insert Into( yPassFail, ycols_3[i]);
)
);
Show( yPassFail );
txList = {};
For( i = 1 , i <= N Items( yPassFail ), i++,
If( Contains( yPassFail[i], "TX S12 State 01" ),
Insert Into( txList , yPassFail[i]);
)
);
rxList = {};
For( i = 1 , i <= N Items( yPassFail ), i++,
If( Contains( yPassFail[i], "RX S21 State 03" ),
Insert Into( rxList , yPassFail[i]);
)
);
deltaAmpList = {};
For( i = 1 , i <= N Items( yPassFail ), i++,
If( Contains( yPassFail[i], "Delta Amp" ),
Insert Into( deltaAmpList , yPassFail[i]);
)
);
txList = Char( txList );
rxList = Char( rxList );
deltaAmpList = Char( deltaAmpList );
Eval( Parse( "dt3 << New Column( \!"Tx_Spar\!", Formula( If( Min(" || txList || " ) == 1, 1, 0 ) ) )" ) );
Eval( Parse( "dt3 << New Column( \!"Rx_Spar\!", Formula( If( Min(" || rxList || " ) == 1, 1, 0 ) ) )" ) );
Eval( Parse( "dt3 << New Column( \!"Rx_SparDelta\!", Formula( If( Min(" || deltaAmpList || " ) == 1, 1, 0 ) ) )" ) );