Betreff: JSL-Codierung für die Partitionierung mehrerer SegmenteSie könnten beispielsweise die Schaltfläche verwenden, um neue Tabellen zu erstellen
Names Default To Here(1);
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
filepath = "$Desktop";
nw = New window("part test",
V List Box(
obj = dt << Partition(
Y(:NPN1),
X(:PNP1, :PNP2, :PNP3, :PNP4, :NPN2, :NPN3, :NPN4),
Method("Decision Tree")
),
Button box("make splits",
make_splits_expr
);
)
);
obj << ShowGraph(0);
obj << SplitBest(4);
obj << Show Split Count(1);
obj << Show Split Prob(1);
make_splits_expr = Expr(
sel_rows = dt << Get Selected Rows;
If(N Items(sel_rows > 0),
dtTemp = dt << subset(invisible, rows(), selected columns(0));
Close(dtTemp, save(filepath || "\" || "badpopulation.jmp"));
dt << invert row selection;
sel_rows = dt << Get Selected Rows;
dtSEG = dt << subset(invisible, selected rows(1), selected columns(0));
Close(dtSEG, save(filepath || "\" || "goodpopulation.jmp"));
);
dt << Clear Selected;
);
In diesem Beispiel fehlt die richtige Fehlerbehandlung und die Information des Benutzers, was vor sich geht
JSL-Codierung für die Partitionierung mehrerer SegmenteDer folgende Code ermöglicht die Auswahl mehrerer Blattknoten aus der Partitionsstruktur über die Option Zeilen auswählen. Das Partitionsfenster muss jedoch geschlossen werden, nachdem der Benutzer die Blattknoten für die Dateierstellung von guten und schlechten Populationen ausgewählt hat. Gibt es eine Alternative, bei der das Partitionsfenster nicht geschlossen werden muss? oder eine andere Funktion anstelle von onClose(), die ich verwenden kann?
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 <= N Row( x ), i++,
// Need to accumulate selected rows, not adding duplicates
If( Selected( Row State( x[i] ) ) & !Contains( ::wasSelected, x[i] ),
::wasSelected = V Concat( ::wasSelected, x[i] )
)
)
);
// Assign the handler to the table
rsh = dt << MakeRowStateHandler( updateWasSelected );
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 );
obj << onClose(
If( N Rows( ::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" )
);
);
dt << clearRowStates;
);
AnalytikSkripterstellungFenster