JSL : 列のレベルでチェックボックスを使用するこんにちは、
元気にしていることを願います。
JMPのチェックボックスのスクリプトについて質問があります。
「強度」変数を含むデータセットがあり、データセット内のすべての強度を示すチェックボックスに従ってデータセットが設定されている場合にサブセットを作成したいと考えています。 その目的は、ユーザーが関心のある強度をチェックボックスにチェックし、チェックボックスにチェックを入れた強度に従ってデータセット内の行が選択されるようにすることです。 データセットによれば、強さは同じである必要はないため、列から強さの一意の値を「抽出」し、チェックボックスで強さを選択するためにチェックボックスに強さを表示することが可能かどうか疑問に思っていました。興味の強さ。 すべてのデータセットを可能な限りすべての強度で分析できるように、スクリプトをできるだけ一般化したいと考えています。
どうもありがとうございました、良い一日をお過ごしください、
ジャン
自動化とスクリプト作成Re: JSL : 列のレベルでチェックボックスを使用するまたあったね、
最後の質問があります。チェックボックスにチェックが入った強さによって各サブセットに名前を付けるようにコードを変更するにはどうすればよいですか?
本当にありがとう、そして良い一日をお過ごしください、
ジャン
Re: JSL : 列のレベルでチェックボックスを使用する大丈夫です!
どうもありがとう !
とても良い一日をお過ごしください、
ジャン
Re: JSL : 列のレベルでチェックボックスを使用する
dt2 変数に格納されているサブセットですか
dt2 変数を定義した場合のみ:)
あなたはこれを行うことができます:
dt2 = dt << subset(
selected rows(1),
selected columns only(0)
);
データセットのサブセットを閉じるまたは非表示にするコマンドはありますか
作成したばかりなので閉じたくないと思いますが、ユーザーに見せたくない場合は非表示にすることができます。
dt2 = dt << subset( invisible,
selected rows(1),
selected columns only(0)
);
すでにデータセットを Jmp で開いている場合、それをどのように定義できますか? dt変数
dt 変数を現在開いているテーブルに関連付けることも、
dt = current data table();
または、複数のテーブルが開いている場合は、テーブルを参照します。
dt = data table("strength data");
最後に、聞いていないかもしれないが疑問に思っているかもしれない質問です。ユーザーがボタンをクリックしてサブセットを作成した後、チェックボックスを含むウィンドウを閉じたい場合は、ファイルの最後に次の行を追加します。 doSubset関数:
cr = current report();
cr << close window;
幸運を。
Re: JSL : 列のレベルでチェックボックスを使用するどうもありがとうございます ! サブセットは dt2 変数に格納されていますか?
Re: JSL : 列のレベルでチェックボックスを使用するどうもありがとうございます !
最後の 2 つの質問:
- データセットのサブセットを閉じるまたは非表示にするコマンドはありますか?
- すでにデータセットを Jmp で開いている場合、それをどのように定義できますか? dt変数?
どうもありがとうございました、良い一日をお過ごしください、
ジャン
Re: JSL : 列のレベルでチェックボックスを使用する「for each」はバージョン 16 の新機能です。古いバージョンをお持ちの場合は、より伝統的な for ループを使用できます。
for (i=1,i<=nitems(selected),i++,
rows = dt << select where(:Strength==selected[i],
current selection("extend")
);
);Re: JSL : 列のレベルでチェックボックスを使用するこんにちはデイビッド、ご協力ありがとうございます!
ただし、コードを実行すると、次のエラーが発生します。

どうすれば修正できますか?
どうもありがとうございました、良い一日をお過ごしください、
ジャン
Re: JSL : 列のレベルでチェックボックスを使用する別の例:
Names Default to Here( 1 );
// mock up data set with Strength
dt = New Table( "Strength",
New Column( "Strength", "Character", "Nominal",
Values( {"Intelligent", "Innovative", "Initiative", "Introvert", "Intelligent",
"Innovative", "Initiative", "Introvert", "Intelligent", "Innovative",
"Initiative", "Introvert"} )
)
);
// get unique values from the strength column
summarize(dt,levels=by(:strength));
// construct a window containing checkboxes
NewWindow("Selection",
BorderBox(top(20),bottom(20),left(20),right(20),
VListBox(
TextBox("Select values:"),
here:cb = CheckBox(levels),
SpacerBox(size(0,20)),
ButtonBox("Create Subset",doSubset())
)
)
);
// define function to perform when button is cliccked
doSubset = function({},{default local},
dt = current data table();
dt << clear select;
// get user selections
selected = here:cb << get selected;
// iterate over each of the selected values
// and select the associated rows
for each( {selection},selected,
rows = dt << select where(:Strength==selection,
current selection("extend")
);
);
// create a subset table
dt << subset(
selected rows(1),
selected columns only(0)
);
dt << clear select;
);
Re: JSL : 列のレベルでチェックボックスを使用するこの例は、うまくいく可能性のあるアプローチを示しています。
Names Default to Here( 1 );
// mock up data set with Strength
dt = New Table( "Strength",
New Column( "Strength", "Character", "Nominal",
Values( {"Intelligent", "Innovative", "Initiative", "Introvert", "Intelligent",
"Innovative", "Initiative", "Introvert", "Intelligent", "Innovative",
"Initiative", "Introvert"} )
)
);
// present user with choices
choice = Associative Array( :Strength ) << Get Keys;
New Window( "Choose Strengths",
Outline Box( "Pick Your Strengths from the Choices Below",
Panel Box( "Strengths",
Check Box( choice,
<< Set Function(
Function( { me, index }, { Default Local },
selection = me << Get Selected;
n = N Items( selection );
dt << Clear Select;
If(
n == 1,
Eval(
Substitute(
Expr( dt << Select Where( :Strength == sss ) ),
Expr( sss ), Name Expr( selection[1] )
)
),
n > 0,
sel expr = Expr( Or() );
For( i = 1, i <= n, i++,
equality = Substitute(
Expr( :Strength == ccc ),
Expr( ccc ), selection[i]
);
Insert Into( sel expr, Name Expr( equality ) );
);
Eval(
Substitute(
Expr( dt << Select Where( eee ) ),
Expr( eee ), Name Expr( sel expr )
)
);
);
);
)
)
)
)
);