大家好,
我是 JMP 脚本新手,有个问题想请教大家,我猜对论坛里的大多数人来说这个问题应该很简单。以下是我正在运行的脚本:
----------------------------------------------------------------------
// Open the raw base data table
raw_data_tbl=open("..\Tables\WA_VS_EXPORT_BASE_VIEW_MKT_1_SAMPLED.jmp");
// Make raw data table the current data table
Current Data Table(raw_data_tbl);
Current Data Table() << Select Where(:Total_interactions >= 1 & :Total_interactions <=40);
raw_data_tbl_sub = Current Data Table() << Subset(columns(
:B_ts,
:B_month,
:B_year,
:C_cd,
:Total_interactions,
:Product,
:T_id,
:Num_interactions,
));
Current Data Table() << Clear Select;
Current Data Table(raw_data_tbl_sub);
// Join the subset table with summary table
chnnl_in_summary = Current Data Table() <<
Join(
With(
Current Data Table() << Summary( Group( :T_id, :C_cd ), N( :Trip_id ) )
),
Select( :B_ts, :B_month, :B_year ),
SelectWith( :T_id, :C_cd ),
Select(
:Total_interactions,
:Product,
:Num_interactions
),
SelectWith( :N Rows ),
By Matching Columns( :T_id = :T_id, :Channel_cd = :Channel_cd ),
Drop multiples( 0, 0 ),
Name( "Include non-matches" )(0, 0)
);
Current Data Table(chnnl_in_summary);
chnnl_in_summary_transp = Current Data Table() << Transpose(
columns( :N Rows ),
By(
:T_id,
:B_ts,
:B_month,
:B_year,
:Total_interactions,
:Product
),
Label( :C_cd )
);
close(raw_data_tbl);
close(raw_data_tbl_sub);
close(chnnl_in_summary);
chnnl_in_summary_transp << save("..\Tables\WA_PATTR.jmp");
close(chnnl_in_summary_transp);
---------------------------------------------------------------------------------------------
脚本在数据处理方面运行正常,符合我的预期,但会弹出很多(实际上总共三个)表格窗口,显示我在处理过程中创建的中间表,这很烦人。此外,还会弹出一个文件对话框,询问我是否要保存一个名称以“Untitled”开头的表。以下是脚本日志窗口的底部内容:
数据表 WA_VS_EXPORT_BASE_VIEW_MKT_1_SAMPLED 的子集打开了其他窗口。您可以关闭此数据表的所有窗口,或者直接将其隐藏。
保存对 JMP 数据表 Untitled 42 的更改?
我的问题是:如何通过脚本正确控制这些窗口,既不中断脚本的执行(例如,在需要时不要关闭整个表格),又能确保脚本结束时所有窗口(包括表格窗口)都已关闭?显然,仅仅向表格发送关闭消息是不够的。非常感谢您的解答。
米洛拉德
如上所述,
使用 close 命令是正确的。要关闭对话框,您可以在 close 函数中指定不保存。因此,对于原始表格,您可以使用:
close(raw_data_tbl,nosave);
和:
JSL 中有一个 INVISIBLE 关键字。它可以在各种情况下使用。熟悉它的最佳方法是打开 JMP 脚本指南 (Help.Books) 并搜索“invisible”。
例如,针对您的代码,您可以执行以下操作:
Current Data Table() << Select Where( ... );
subsetTable = Current Data Table << Subset( invisible );