如何编写一个 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 ) );
我想知道如何使用单元格的值作为条件对这种形式的子集选择进行编码。
谢谢专家!