如何編寫一個 JSL 來實現使用單元格值選擇子集的條件之一?例如,在“Big Class.jmp”中:添加“add”列,並將“add”列第一行的值更改為“&:height<65”。 JSL代碼如何在“添加”列的第一行添加條件?
使該組合的JSL功能與以下代碼相同:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Select Where( sex == "F" & :age > 14 & :height < 65 );
d3 = dt << Subset( Output Table( "test" ), Selected Rows( 1 ), selected columns( 0 ) );

謝謝!
腳本回复:如何編寫一個 JSL 來實現使用單元格值選擇子集的條件之一?謝謝布雷迪!
這正是我需要的 JSL,因此我不需要使用 if()。回复:如何編寫一個 JSL 來實現使用單元格值選擇子集的條件之一?這絕對是可能的,但是您是否排除了使用(全局)數據過濾器的可能性? 這將使您——以及那些不是腳本編寫者的人——輕鬆輸入查詢,保存您的收藏夾,並將過濾器保存到數據表中以備將來使用。
一旦收藏夾存在,就可以從下拉菜單中輕鬆訪問它們。
這是一個非常簡單的方法(並且可以教給你的討厭腳本的同事,他們可能是最終用戶?)。 基於單元格的方法將要求最終用戶輸入合法的語法——遠不能保證。
設置完成後,用戶只需從下拉列表中進行選擇。 更高級的用戶可以添加自己的過濾器。 選擇是立即進行的,所以剩下的就是創建子集。

另一方面,如果您需要堅持最初的方法,可以採用以下方法:
Names Default To Here(1);
//setup
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << new column("add");
dt:add[1] = " & :height < 65";
//using \[ and ]\ to delimit the initial :sex == "F" string means you don't have to escape double-quotes.
query text = "\[:sex == "F"]\" || dt:add[1];
//parse and substitute the actual query text in for _TXT_ in the first expression below, and evaluate
eval (substitute(
expr ( dt << Select Where( _TXT_ ) ),
expr( _TXT_),
parse(query text)
));
dtSub = dt << subset (selected rows(1), selected columns(0));
乾杯,
布雷迪
回复:如何編寫一個 JSL 來實現使用單元格值選擇子集的條件之一?此代碼直接使用單元格的內容來計算列公式中的值。
但我不知道如何將這種形式應用於選擇子集的代碼。
謝謝!
aaa = dt[r, "abc"];
Eval( Parse( "Column(d9,\!"test\!")<<FORMULA></FORMULA>
回复:如何編寫一個 JSL 來實現使用單元格值選擇子集的條件之一?我試圖用這種方式編寫代碼,但沒有成功。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "add", Character, "Nominal" );
dt[1, "add"] = "&:height<65";
a = dt[1, "add"];
dt << Select Where( :sex == "F" & :age > 14 || a );
d3 = dt << Subset( Output Table( "test" ), Selected Rows( 1 ), selected columns( 0 ) );
我想知道如何使用單元格的值作為條件對這種形式的子集選擇進行編碼。
謝謝專家!