如何编写实现使用单元格值选择子集的条件之一的 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?我试图以这种方式编码,但没有奏效。
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 ) );
我想知道如何使用单元格的值作为条件来编码这种形式的子集选择。
感谢专家!
回复:如何编写实现使用单元格值选择子集的条件之一的 JSL?此代码直接使用单元格的内容来计算列公式中的值。
但我不知道如何将这种形式应用于选择子集的代码。
谢谢!
aaa = dt[r, "abc"];
Eval( Parse( "Column(d9,\!"test\!")<<FORMULA></FORMULA>
回复:如何编写实现使用单元格值选择子集的条件之一的 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));
干杯,
布雷迪