有没有办法可以同时为 2 列切换器创建报告?你好,
我想运行多重 t 检验,其中我有多个 X 和 Y 的列表。有没有办法使用脚本来做到这一点?我稍微修改了我用于 1 列切换器的脚本,但我不知道如何同时执行它们。例如这个较小的测试(3x3):
Oneway(
Y(:Name("A")),
X(:Name("1")),
t Test(1),
Column Switcher(:Name("A"), {:Name("A"), :Name("B"), :Name("C")}),
Column Switcher(:Name("1"), {:Name("1"), :Name("2"), :Name("3")})
);
rpt = Current Report();
colswitcher_obj = rpt[ColumnSwitcherCOntextOutlinebox(1)] << get scriptable object;
colswitch_list = colswitcher_obj << get list;
/* Loop through each column in the colswitch_list */
For(i = 1, i <= N Items(colswitch_list), i++,
/* Change here */
dt1 = rpt[Outline Box("t Test")][Table Box(1)] << make combined data table;
/* Concatenate the tables */
If(i == 1,
main_tb = dt1;
main_tb << Set Name("All");
,
Try(main_tb << Concatenate(dt1, Append to First Table));
Close(dt1, No Save);
);
/* Close temporary tables and switch next column */
colSwitcher_obj << Next;
);
自动化和脚本回复:有没有办法同时为 2 列切换器创建报告?您在循环内使用了错误的列切换器对象引用(具有 N 个项(colswitch_list2)的内循环应该改变 colSwitcher_obj2 << Next)。

还可以使用

将 JSL 发布到 JMP 社区时,它使阅读帖子变得更加容易。
回复:有没有办法同时为 2 列切换器创建报告?事实上你是对的,现在它可以完美地适用于 10x10 的列(参见下面的脚本)。
但我有一个问题,如果我的 X 列数和 Y 列数不完全相同,则切换不起作用!请问您知道我做错了什么吗?
// 分析和列切换器
单程(
Y(:名称("553")),
X(:名称("1")),
t检验(1),
列切换器(:名称("1"),{:名称("1"),:名称("2"),:名称("3"),:名称("4"),:名称("5"),:名称("6"),:名称("7"),:名称("8"),:名称("9"),:名称("10")}),
列切换器(:名称("553"),{:名称("553"),:名称("554"),:名称("555"),:名称("556"),:名称("557"),:名称("558"),:名称("559"),:名称("560"),:名称("561"),:名称("562")}));
//报告创建
rpt = 当前报告();
colswitcher_obj = rpt[ColumnSwitcherCOntextOutlinebox( 1 )] << 获取可编写脚本的对象;
colswitcher_obj2 = rpt[ColumnSwitcherCOntextOutlinebox( 2 )] << 获取可编写脚本的对象;
colswitch_list = colswitcher_obj << 获取列表;
colswitch_list2 = colswitcher_obj2 << 获取列表;
// 循环遍历每个 Y 变量
对于(j = 1,j <= N 个项目(colswitch_list),j ++,
// 循环遍历每个 X 变量
对于(k = 1,k <= N 个项目(colswitch_list2),k ++,
/* 在此处更改 */
dt1 = rpt[大纲框( "t 检验" )][表格框( 1 )] << 制作组合数据表;
/* 连接表格 */
如果(j == 1 & k == 1,
主要_tb = dt1;
main_tb << 设置名称(“全部”);
,
尝试(main_tb << Concatenate(dt1,附加到第一个表));
关闭(dt1,不保存);
(英文):
// 切换到下一个 X 列
colSwitcher_obj << 下一步;
等待(0);
(英文):
// 切换到下一个 Y 列
colSwitcher_obj2 << 下一步;
等待(0);
(英文):
回复:有没有办法同时为 2 列切换器创建报告?如果不了解您的数据,很难说。例如,您可能会遇到这样的问题:您的某一列包含大量类别,而这会导致问题。也许在每个 << next 之后添加 wait(0); 可能会有所帮助,但脚本仍然很可能会非常慢。
另外,我认为您至少对 k 变量使用了不正确的最大计数(它不应该是 N 个项目(col_switch_list2))。
回复:有没有办法同时为 2 列切换器创建报告?我使用以下脚本解决了我的问题,但是当我在完整数据库上运行它时,JMP 崩溃(我认为是内存问题),有什么想法可以解决内存问题吗?
单程(
Y( :名称( "A" ) ),
X( :名称( "1" ) ),
t检验(1),
列切换器(:名称(“1”),{:名称(“1”),:名称(“2”),:名称(“3”)}),
列切换器(
:名称(“A”),
{:名称( “A” ), :名称( “B” ), :名称( “C” )}
)
(英文):
rpt = 当前报告();
colswitcher_obj = rpt[ColumnSwitcherCOntextOutlinebox( 1 )] << 获取可编写脚本的对象;
colswitcher_obj2 = rpt[ColumnSwitcherCOntextOutlinebox( 2 )] << 获取可编写脚本的对象;
colswitch_list = colswitcher_obj << 获取列表;
// 循环遍历每个 Y 变量
对于(j = 1,j <= N 个项目(colswitch_list),j ++,
// 循环遍历每个 X 变量
对于(k = 1,k <= N 个项目(colswitch_list),k ++,
/* 在此处更改 */
dt1 = rpt[大纲框( "t 检验" )][表格框( 1 )] << 制作组合数据表;
/* 连接表格 */
如果(j == 1 & k == 1,
主要_tb = dt1;
main_tb << 设置名称(“全部”);
,
尝试(main_tb << Concatenate(dt1,附加到第一个表));
关闭(dt1,不保存);
(英文):
// 切换到下一个 X 列
colSwitcher_obj << 下一步;
(英文):
// 切换到下一个 Y 列
colSwitcher_obj2 << 下一步;
(英文):
回复:有没有办法同时为 2 列切换器创建报告?是否有特定原因需要使用列切换器?您可以循环遍历列,然后重新创建报告并提取结果。