使用 JSL 连接所有数据表你好,我想连接所有打开的数据表。 但是,数据表的数量可能会有所不同,我希望脚本能够适应不同数量的表。
这是我想要做的代码,但是我想将其概括:
数据表( N 表() ) << 连接(
数据表( (N 表()-1) ),
数据表( (N 表()-2) ),
数据表( (N 表()-3) ),
数据表( (N 表()-4) ),
数据表( (N 表()-5) ),
输出表(“所有温度”),
创建源列
);
这是我尝试过的代码,出现输出表未解析名称的错误(在本例中 noTemps 为 6 )
数据表( N 表() ) << 连接(
对于( i = 1, i < (noTemps), i++,
数据表( (N 表()-i) ),
);
输出表(“所有温度”),
创建源列
);
自动化和脚本编写数据存取数据混合和清理回复:使用 JSL 连接所有数据表您使用的是哪个版本的 JMP?
回复:使用 JSL 连接所有数据表如果 JMP16+ 我会使用 for every 并循环遍历表列表
Names Default To Here(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = dt1 << Subset(All Rows, Selected Columns(0), Output Table("DEMO"));
dts = Get Data Table List();
dt_first = Remove From(dts, 1); // remove first table as we concatenate to that
For Each({dt}, dts,
dt_first << Concatenate(
dt,
"Append to first table",
"Create source column"
);
// Close(dt, no save);
);回复:使用 JSL 连接所有数据表感谢您的回复,但是我正在努力使其适用于我的情况(尽管我认为这应该相对容易)。
dt是什么? 我收到名称未解决的错误。
我也没有分配 dt1,因为所有表都已从脚本的前一部分打开。 如何在不直接调用特定表的情况下分配它?
如果我确实像下面这样分配 dt1,则会生成演示表,该表充满了单词 demo。
dt1 = 打开(“$DOCUMENTS/Plot_Conduction_Losses/模块 6/DUT2/100C.jmp”);
很抱歉,如果这解释得不好而且啰嗦。
回复:使用 JSL 连接所有数据表dt1 和 dt2 仅用于演示目的。 您可以使用 Get Data Table List() 获取对所有打开的表的引用。 您使用的是哪个 JMP 版本(For 都需要 JMP16+,但可以用 For 替换)? dt是对数据表的引用,可以从以下数据表引用列表中找到dts。
回复:使用 JSL 连接所有数据表我有 JMP 17。
我现在明白了 dt 部分,很抱歉造成混乱。
dts = 获取数据表列表();
dt_first = 删除自(dts, 1); // 当我们连接到第一个表时删除它
对于每个({dt},dts,
dt_first << 连接(
德特,
//追加到第一个表,
“创建源列”,
输出表(“所有温度”),
);
//关闭(dt,不保存);
);
这不完全是我想要的。 它生成 6 个新数据表,全部与 dt_first 连接。我希望它是一个新的数据表。 如果我取消注释附加到第一个表行。它生成 6 个源列,我无法在进一步分析中使用它们进行排序。
回复:使用 JSL 连接所有数据表不记得你可以使用带有连接的列表
Names Default To Here(1);
Open("$SAMPLE_DATA/Students.jmp");
Open("$SAMPLE_DATA/Students1.jmp");
Open("$SAMPLE_DATA/Students2.jmp");
dts = Get Data Table List();
dt_first = Remove From(dts, 1)[1]; // remove first table as we concatenate to that
dt_result = dt_first << Concatenate(dts, "Create source column");
还必须/应该从Remove From() 获取第一个索引,因为Remove From() 返回一个列表。