回复:多段分区的 JSL 编码例如,您可以使用按钮来创建新表
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;
);
此示例中缺少正确的错误处理和通知用户正在发生的事情
多段分区的 JSL 编码以下代码允许通过 Select Rows 选项从分区树中选择多个叶节点。 但是,在用户选择叶子节点后,分区窗口必须关闭,以便创建好和坏种群的文件。 是否有不需要关闭分区窗口的替代方法?或任何其他代替我可以使用的 onClose() 功能?
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;
);
分析脚本视窗