다중 세그먼트 파티션 선택을 위한 JSL 스크립트에 대한 도움이 필요합니다.다음 코드는 좋은 새 테이블을 만드는 데 도움이 되지만 파티션 창이 열린 상태에서 잘못된 채우기에 대해 하나만 선택할 수 있습니다. 파티션 화면이 열리길 원하지만 사용자는 나쁜 채우기에 대해 둘 이상의 리프 노드를 선택할 수 있으며 나머지는 좋은 채우기로 이동합니다. 이 작업을 수행하는 방법이 있습니까?
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;
);노란색으로 강조 표시된 노드를 잘못된 채우기로 선택하고 이 파티션 창을 열어 둔 상태에서 좋은 채우기로 휴식하고 결과에 만족하지 않으면 노드 선택을 변경할 수 있기를 원합니다.

그것을 가능하게 하는 방법이 있습니까?
해석학스크립팅창Re: 다중 세그먼트 파티션 선택을 위한 JSL 스크립트에 대한 도움이 필요합니다.다음은 그것을 찌르는 것입니다.
lstSelectedRows = {};
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")
),
HListBox(
TextBox("rows selected in node = "),
tb1 = TextBox("0"),
),
HListBox(
TextBox("total rows selected = "),
tb2 = TextBox("0")
),
ButtonBox("clear all selections",
clear_selections
, underlinestyle(1)
),
Button box("make splits",
make_splits_expr
);
)
);
// in the partition platform from any node you can select rows
// but we need to detect this event ... do it by detecting
// row state changes in the table
rs = dt << make row state handler(
function({a},
cdt = current data table();
sel = cdt << Get Selected Rows;
insertinto(lstSelectedRows,aslist(sel));
tmp = [=>];
insertInto( tmp, lstSelectedRows );
lstSelectedRows = tmp << getKeys; // <--- dedupe
tb1 << settext(char(nrows(sel)));
tb2 << settext(char(nitems(lstSelectedRows)));
)
);
obj << ShowGraph(0);
obj << SplitBest(4);
obj << Show Split Count(1);
obj << Show Split Prob(1);
clear_selections = Expr(
dt << Clear Selected;
tb1 << settext("0");
tb2 << settext("0");
lstSelectedRows = {};
);
make_splits_expr = Expr(
dt << select rows(lstSelectedRows);
sel_rows = dt << Get Selected Rows;
tb1 << settext(char(nrows(sel_rows)));
If(N Items(sel_rows > 0),
dtTemp = dt << subset(rows(), selected columns(0), output table("Selected"));
//Close(dtTemp, save(filepath || "\" || "badpopulation.jmp"));
dt << invert row selection;
sel_rows = dt << Get Selected Rows;
dtSEG = dt << subset(selected rows(1), selected columns(0), output table("Not Selected"));
//Close(dtSEG, save(filepath || "\" || "goodpopulation.jmp"));
);
dt << Clear Selected;
);
나는 당신이 무엇을 하려는지 이해하지 못했을 수 있으므로 코드에서 무슨 일이 일어나고 있는지 설명하지 않겠습니다. 하지만 이것이 당신이 하려는 일이라면 무슨 일이 일어나고 있는지 설명하게 되어 기쁩니다. 바로 알려주세요.일부 코드는 약간 보기 흉하지만 당신이 하려는 것을 이해할 수 있는지 알고 싶었습니다.내 편의를 위해 2개의 테이블을 데스크탑에 저장하는 대신 '선택됨' 및 '선택되지 않음'이라는 제목의 2개(보이는 테이블)를 만듭니다.