Sélection multiple de segments de partitionJe souhaite sélectionner plusieurs segments lorsque le modèle de partition est affiché. Les segments sélectionnés iront dans le fichier jmp de mauvaise population et le reste ira dans le fichier jmp de bonne population. Mais je ne sais pas comment le coder pour une sélection multiple des segments.
Mon code est le suivant où il peut faire la séparation en deux catégories:
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"));
)
);
Je veux ajouter pour plusieurs segments, supposer ceux en surbrillance et les mettre dans un seul fichier jmp
(badpopulation) et les données de repos dans un autre fichier jmp (goodpopulation) quelqu'un peut-il m'aider concernant ce codage ?
AnalytiqueTableau de donnéesScriptles fenêtresRe : sélection multiple de segments de partitionIl semble que vous souhaitiez autoriser la sélection des lignes associées à plusieurs nœuds feuilles via l'option LRT "Sélectionner les lignes". Si tel est le cas, vous pourrez peut-être utiliser un gestionnaire d'état de ligne, et le code ci-dessous devrait vous aider à démarrer. Notez que cela suppose que l'utilisateur n'effectue pas de sélections de ligne autrement que via le rapport de partition.
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;
);Re : sélection multiple de segments de partitionMerci beaucoup. Je vais essayer celui-ci.