JSL:使用帶有列級別的複選框你好,
我希望你一切都好。
我對 JMP 中復選框的腳本有疑問。
我有一個帶有“強度”變量的數據集,如果數據集根據呈現數據集中所有強度的複選框,我想創建一個子集。 目的是用戶在復選框中檢查感興趣的強度,並且根據在復選框中檢查的強度來選擇數據集中的行。 由於根據數據集,優勢不一定相同,我想知道是否可以從列中“提取”優勢的唯一值,然後在復選框中顯示優勢,以便在復選框中選擇興趣的強項。 我希望腳本盡可能通用,以分析具有所有可能優勢的所有數據集。
非常感謝您,祝您有愉快的一天,
讓
自動化和腳本編寫回复:JSL:使用帶有列級別的複選框再一次問好,
我有最後一個問題:如何修改代碼以根據複選框中選中的優勢來命名每個子集?
非常感謝你,祝你有愉快的一天,
讓
回复:JSL:使用帶有列級別的複選框都好 !
太感謝了 !
祝你度過愉快的一天,
讓
回复: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");
最後,還有一個你沒有問過但可能想知道的問題。用戶單擊按鈕創建子集後,如果要關閉包含複選框的窗口,可以將以下行添加到做子集功能:
cr = current report();
cr << close window;
祝你好運。
回复:JSL:使用帶有列級別的複選框非常感謝 ! 子集是否存儲在 dt2 變量中?
回复:JSL:使用帶有列級別的複選框非常感謝 !
最後兩個問題:
- 是否有任何命令可以關閉或隱藏數據集的子集?
- 如果我已經在 Jmp 中打開了一個數據集,我如何在 a 中定義它dt多變的?
非常感謝您,祝您有愉快的一天,
讓
回复:JSL:使用帶有列級別的複選框'foreach' 是版本 16 中的新功能。如果您有舊版本,則可以使用更傳統的 for 循環:
for (i=1,i<=nitems(selected),i++,
rows = dt << select where(:Strength==selected[i],
current selection("extend")
);
);回复:JSL:使用帶有列級別的複選框大衛您好,非常感謝您的幫助!
但是,當執行代碼時,出現以下錯誤:

我該如何修復它?
非常感謝您,祝您有愉快的一天,
讓
回复: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;
);
回复: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 )
)
);
);
);
)
)
)
)
);