Mehrfachauswahl von PartitionssegmentenIch möchte mehrere Segmente auswählen, wenn das Partitionsmodell angezeigt wird. Die ausgewählten Segmente werden in die jmp-Datei für schlechte Populationen und der Rest in die jmp-Datei für gute Populationen verschoben. Aber ich weiß nicht, wie ich es für die Mehrfachauswahl der Segmente codieren soll.
Mein Code sieht wie folgt aus, wo er die Trennung in zwei Kategorien vornehmen kann:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
obj = Partition(
Y( :NPN1 ),
X( :PNP1, :PNP2, :PNP3, :PNP4, :NPN2, :NPN3, :NPN4 ),
Method( "Decision Tree" ),
Validation Portion( .2 )
);
obj << ShowGraph( 0 );
obj << SplitBest( 4 );
obj << Show Split Count( 1 );
obj << Show Split Prob( 1 );
Wait( .5 );
obj << on close(
If( N Items( dt << get selected rows() ) > 0,
dtTemp = dt << subset( invisible, selected rows( 1 ), selected columns( 0 ) );
dt << invert row selection;
dtSEG = dt << subset( invisible, selected rows( 1 ), selected columns( 0 ) );
filepath = "$Desktop";
Close( dtTemp, save( filepath || "\" || "badpopulation.jmp" ) );
Close(dtSEG, save(filepath || "\" || "goodpopulation.jmp"));
)
);
Ich möchte für mehrere Segmente hinzufügen, nehme die hervorgehobenen an und bringe sie in eine jmp-Datei
(badpopulation) und Restdaten in eine andere JMP-Datei (goodpopulation) kann mir jemand bei dieser Codierung helfen?
AnalytikDatentabelleSkripterstellungFensterBetreff: Mehrfachauswahl von PartitionssegmentenEs sieht so aus, als ob Sie die Auswahl der Zeilen zulassen möchten, die mehreren Blattknoten über die LRT-Option „Select Rows“ zugeordnet sind. Wenn dies der Fall ist, können Sie möglicherweise einen Zeilenzustandshandler verwenden, und der folgende Code sollte Ihnen den Einstieg erleichtern. Beachten Sie, dass davon ausgegangen wird, dass der Benutzer keine andere Zeilenauswahl als über den Partitionsbericht vornimmt.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// Matrix of all rows that were selected
::wasSelected = [];
// Row state handler function
updateWasSelected = Function({x}, {Default Local},
// 'x' is a column vector of row states that have CHANGED. We just need those that are now selected . . .
For( i = 1, i <= NRow(x), i++,
// Need to accumulate selected rows, not adding duplicates
If( Selected(RowState(x[i])) & !Contains(::wasSelected, x[i]),
::wasSelected = VConcat(::wasSelected, x[i])
);
);
);
// Assign the handler to the table
rsh = dt << MakeRowStateHandler(updateWasSelected);
// Do the partition and allow user to make selections vis leaf node LRT
obj = dt << Partition(
Y( :NPN1 ),
X( :PNP1, :PNP2, :PNP3, :PNP4, :NPN2, :NPN3, :NPN4 ),
Method( "Decision Tree" )
);
obj << ShowGraph( 0 );
obj << SplitBest( 4 );
obj << Show Split Count( 1 );
obj << Show Split Prob( 1 );
// Figure out what has been selected and make the auxilliary tables
obj << onClose(
If( NRows(::wasSelected) > 0,
filepath = "$Desktop";
Try(
dtTemp = dt << subset( invisible, rows( ::wasSelected ), selected columns( 0 ) );
Close( dtTemp, save( filepath || "\" || "badpopulation.jmp" ) ),
Print("No rows for table!");
);
dt << invert row selection;
Try(
dtSEG = dt << subset( invisible, selected rows( 1 ), selected columns( 0 ) );
Close( dtSEG, save( filepath || "\" || "goodpopulation.jmp" ) ),
Print("No rows for table!");
);
);
dt << clearRowStates;
);Betreff: Mehrfachauswahl von PartitionssegmentenIch danke dir sehr. Ich werde dieses ausprobieren.