Endgültiges ErtragstabellenproblemMr. txnelson war so freundlich, mir ein großartiges Skript zur Verfügung zu stellen, das Spalten Pass/Fail zuweist und schließlich ein endgültiges Pass/Fail basierend auf der gesamten Zeile. Ich möchte diese letzte Spalte in Unterspalten unterteilen und obwohl ich weiß, wie es konzeptionell gemacht werden kann, kann ich die richtige Syntax nicht herausfinden.
Dieses Stück Code findet das Minimum ALLER Spalten, aber ich möchte Teilmengen hinzufügen
Eval( Parse( "dt2 << New Column( \!"Row Pass/Fail\!", Formel( If( Min(" || gefundenSpalten || " ) == 1, 1, 0 ) )" ) );
Säulen:
Reihe bestanden/nicht bestanden
Test_1 Bestanden/Nicht bestanden
Test_2 Bestanden/Nicht bestanden
Test_3a Bestanden/Nicht bestanden
Test_3b Bestanden/Nicht bestanden
Test_3c Bestanden/Nicht bestanden
Test_3d Bestanden/Nicht bestanden
Test_3e Bestanden/Nicht bestanden
Test_4_State_1 Bestanden/Nicht bestanden
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: Problem mit der endgültigen ErtragstabelleIch musste ein bisschen kreativ werden, aber es hat geklappt.Es sieht ein bisschen ungeschickt aus, aber es erledigt die Arbeit.. Danke
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 ) ) )" ) );
Betreff: Problem mit der endgültigen ErtragstabelleIch nehme an, die betreffende Variable ist "FoundCols".Sie setzen es auf den Wert "", wodurch die Variable "FoundCols" zu einer Zeichenfolge und nicht zu einer Liste wird.Dann prü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: Problem mit der endgültigen ErtragstabelleLeider ist es immer noch das gleiche Problem mit der Fehlermeldung "N Items() argument must be a list{579}"
Ich glaube, Sie haben dieses Stück Code am Anfang meiner Reise auf diesem Weg bereitgestellt.
Oh, und wir haben jetzt JMP 15, also wenn es einen anderen Weg gibt, bin ich ganz Ohr (Augen) ...
Danke
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: Problem mit der endgültigen ErtragstabelleMir ist klar, dass ich bei meinem letzten Eintrag einen Fehler gemacht habe.Der Code zum Auffüllen der NewList muss wie folgt 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: Problem mit der endgültigen ErtragstabelleIch entschuldige mich, ich habe endlich Zeit, dies noch einmal zu überprüfen, seit ich ursprünglich gepostet habe. Ich erhalte eine Fehlermeldung, dass das Argument „N Items() eine Liste sein muss“.
gefundenSpalten = ""; ist der Originalcode, nicht in einer Liste.
Folgendes sollte meiner Meinung nach passieren
listCols = { foundCols };
listCols = Eval List ( listCols );
An diesem Punkt habe ich alle gefundenen Cols in einer Liste, aber wenn ich das folgende Skript ausführe, wird newList nicht gefüllt.
newList = {};
For( i = 1, i <= N Items( listCols ), i++,
If( Contains( listCols, "TX" ),
Insert Into( newList, listCols[i]);
)
);
Vielen Dank im Voraus
Betreff: Problem mit der endgültigen ErtragstabelleIch denke, Sie können einfach eine neue Liste erstellen, die nur die Spalten mit dem Namen Rx 3 enthält, und dann eine neue Spalte erstellen, die diese Liste verwendet, um Werte in der neuen Spalte festzulegen.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: Problem mit der endgültigen ErtragstabelleDas mache ich derzeit jedoch, weil ich mehrere Produktlinien analysiert habe, die denselben Rx im Testnamen haben, von denen eine 300 verschiedene Bedingungen in diesem Rx hat. Ich hatte gehofft, dies dynamisch zu tun, damit es für alle bestehenden und kommenden Produkte funktioniert. .
Betreff: Problem mit der endgültigen ErtragstabelleIch würde einfach interaktiv eine neue Spalte erstellen und dann in den Formeleditor gehen und nur die Rx-Statusspalten auswählen, die ausgewertet werden sollen
Betreff: Problem mit der endgültigen ErtragstabelleDanke schön. Wenn es Ihnen nichts ausmacht, könnten Sie mir bitte beim nächsten Teil helfen?
Dieser Code nimmt alle Spalten {foundCols}, die 'Pass/Fail' enthalten, findet den Mindestwert und weist endgültig Pass oder Fail 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, sagen Sie 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: Problem mit der endgültigen ErtragstabelleEs gibt einen einfachen Syntaxfehler in Ihrer Eval(Parse())-Anweisung.Ein ")" wurde weggelassen.Hier ist eine funktionierende Version
Eval( Parse( "dt2 << New Column( \!"Row Pass/Fail\!", Formula( If( Min(" || foundCols || " ) == 1, 1, 0 ) ) )" ) );