cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
Choose Language Hide Translation Bar
View Original Published Thread

マルチセグメントパーティション選択のためのJSLスクリプトのヘルプが必要

shasha_2
Level III

次のコードは、良いもので新しいテーブルを作成するのに役立ちますが、パーティションウィンドウを開いた状態で悪い母集団に対して選択できるのは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;
);

黄色で強調表示されたノードを不良母集団として選択し、このパーティションウィンドウを開いたまま良好な母集団として残り、結果に満足できない場合はノード選択を変更できるようにしたいと思います。

undefined

それを実現する方法はありますか?

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

1 REPLY 1
David_Burnham
Super User (Alumni)

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つの(表示可能なテーブル)を作成します。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。