如何根据创建子集数据表时使用的数据筛选条件重新命名该表我参考了这篇帖子(已解决:如何将数据筛选器 () 选择的数据导入新数据表(使用 JSL)? - JMP 用户社区; https://community.jmp.com/t5/Discussions/How-to-get-data-selected-by-Data-Filter-into-a-new-data-table/mp/642343 )中的代码,可以通过数据筛选器选择特定的年龄和性别组合,并生成一个名为“大班级子集”的子集表,其中只包含所需的行。但是,我希望使用数据筛选器中选中的选项来命名或重命名数据文件。例如,如果我选中年龄 13 岁且性别为女性,我希望自动将表命名为“年龄 13 岁 性别 女 大班级子集”或类似名称。遗憾的是,我不知道如何从数据筛选器或脚本中获取这些值。
请问有人能帮我指出正确的函数、选项或语法吗?
我想我可以从结果数据本身中提取它们,但我相信一定有办法在“源头”存储这些值。
JMP 17
谢谢你!
自动化和脚本编写回复:如何根据创建子集数据表时使用的数据筛选条件重新命名该表在不清楚您希望名称如何显示的情况下,我建议您先了解一下“获取 WHERE 子句”,您可以将其传递给数据过滤器,它会返回类似这样的结果。

"Select Where((:age == 12 | :age == 14) & (:sex == \!"F\!" | :sex == \!"M\!"))"
然后您可以提取
(:age == 12 | :age == 14) & (:sex == \!"F\!" | :sex == \!"M\!")
并以此作为名称
回复:如何根据创建子集数据表时使用的数据筛选条件重新命名该表谢谢你的建议,Jarmo。我在其他脚本中也用过“选择条件”功能。但很遗憾,我需要数据筛选器的交互式功能,因为每次运行结果都不一样。我无法像你建议的那样硬编码特定选项——除非我误解了你的意思?
至于名字,只要包含所需信息,任何格式都可以。一旦我能将年龄和性别信息存入某个变量或对象中进行操作,名字的格式我就不纠结了。
回复:如何根据创建子集数据表时使用的数据筛选条件重新命名该表使用 << Get Where 子句获取的格式是其中一种选择。您还可以根据筛选器中使用的列从结果表中提取值(虽然可以从原始表中提取,但从结果表中提取更容易,速度也可能更快)。
回复:如何根据创建子集数据表时使用的数据筛选条件重新命名该表以下示例演示如何根据数据筛选器中的设置创建表的子集,新表的名称即为用于创建该表的 WHERE 子句的名称。如果筛选器中存在选择项,则会在关闭数据筛选器时创建该子集。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
nw = New Window( "Select Parameters",
//<
<MODAL></MODAL> theClause = obj << Get Where Clause;
If( theClause != "",
dt << subset(
selected columns( 1 ),
selected rows( 1 ),
output table( Substr( theClause, 14, Length( theClause ) - 15 ) )
)
);
);
回复:如何根据创建子集数据表时使用的数据筛选条件重新命名该表@txnelson我觉得你掉线了
theClause = obj << Get Where Clause;
在 If 之前。
使用正则表达式进行解析(不确定是否在所有情况下都有效)
tbl_name = Regex(theClause, "Select Where\((.+)\)", "\1")
回复:如何根据创建子集数据表时使用的数据筛选条件重新命名该表是的,我修改了原来的条目。
回复:如何根据创建子集数据表时使用的数据筛选条件重新命名该表非常感谢!它完美运行。我真的很感激您讲解如何正确使用 Get Where 子句。我明白 Jarmo 的建议是正确的,但我尝试时却一直出错。我看到您通过移除模态模式并将其包裹在处理窗口关闭的代码中解决了这个问题。我学习得比较慢,但我正在学习。再次感谢!