使用 JSL 脚本实现更高级别的自动化该网络研讨会以英语进行,时间为美国东部时间下午 2:00。
JMP 工作流允许您捕获、重放和共享您的点击式数据工作。了解如何将一次性工作流转换为可跨不同用户和数据源工作的用户友好型脚本。本课程专为具有创建 JMP 工作流背景的 JMP 用户设计。观看简洁的 30 分钟演示,然后观看 15-30 分钟的主题讨论和问答。
本次网络研讨会内容包括:用于用户输入的简单模态窗口和相关的 JSL 语法。
自动化和脚本英语掌握JMP回复:使用 JSL 脚本实现更高级别的自动化来自 Anderson Mayfield @abmayfield 05-31-2023 下午 1:41
感谢大家整理这些内容。我有一个关于“概括”的后续问题,这更多地与我缺乏脚本编写能力有关。通常在我的工作流程中,我需要“选择所有列”,然后执行某些操作,无论是汇总、分组、探索缺失值等。但是,我有数千列,它们在每个新数据表中的名称都会不同,因此当系统提示我找不到某个特定列时(需要几个小时),我不能只替换 5,000 列。我想知道我是否可以先对列进行分组,然后对组执行其余的工作流程步骤。我可以给该组起一个通用名称。
另一种方法是尝试通过名称中的属性来选择列,如下面的脚本所示。是否有办法编写脚本,使工作流中的下一步包含此脚本生成的选定列?例如,如果我想转置名称中带有“the”的所有列,是否可以将此脚本嵌入到工作流中?我正在尝试思考如何避免必须在每个文件中重新编码列名,尽管这是另一种选择!
我意识到当您有数十个格式相同的表格需要处理时,工作流生成器可能会发挥最佳作用,但我试图弄清楚当每个表格略有不同时我是否可以让它配合。
names default to here(1);
dt=current data table();
colNames = dt << get column names(string);
for each({Name}, colNames,
if(contains(Name,"nox"),
for each row(
column(name)[row()] = ???????????; // your formula here
)
);
);
回复:使用 JSL 脚本实现更高级别的自动化来自@Jordan_Hiller 06-03-2023 下午 6:49
如果我理解你的问题, @abmayfield ,你问的是 JMP17 工作流程是否可以适应大量更改的列名。我会说是的,这是可能的,但如果不将一些自定义 JSL 插入到工作流程中,就不可能实现。
一个好方法是让你的工作流/脚本对用户选择的列进行操作 前 运行工作流程。
以下是使用血压样本数据集的示例。
Names Default To Here( 1 );
//Custom JSL: Get the user-selected columns, save them into list CNames
CNames = Current Data Table() << Get Selected Columns;
//Slightly modified workflow step: replace hard-coded columns with list CNames
Data Table( "Blood Pressure" ) << Transpose(
columns( CNames ),
By( :Dose ),
Label( :Subject ),
Output Table( "tdata" )
);
不管你如何解决这个问题,解决方案可能都会涉及 JSL 列表。学习一点列表知识可以给你带来新的编码超能力!
回复:使用 JSL 脚本实现更高级别的自动化@hogi问道:您能否在 Workflow Builder 中点击“记录”,然后运行脚本?WFB 会捕获脚本的步骤吗?
是的, JMP 18 工作流程确实捕获了工作流程记录时运行的脚本。
回复:使用 JSL 脚本实现更高级别的自动化嗨@gail_massari ,这是一个很大的改进。它加快了将用户生成的代码添加到工作流的速度。感谢您实施它!
我希望下一步: Workflow Builder + AddIns能尽快推出:)
回复:使用 JSL 脚本实现更高级别的自动化谢谢@hogi我们将看看对 JMP 19 的工作流构建器和插件的请求如何跟踪。