根据表名的内容将变量分配给表。我有多个打开的表,需要根据表名的包含(DC1,DC2,DC3)分配变量。如果表名包含DC1分配dt1,如果表名包含DC2分配dt2....
表1: ABC_25C_DC1_2024
表2: ABC_25C_DC2_2024
表 3:ABC_25C_ DC3 _2024
这是我尝试使用的命令行。
tablelist = 获取数据表列表() << 获取名称;
如果(包含(连接项目(表列表),“DC1”),
dt2= XXXXXXXXX
);
基础数据分析和建模回复:根据表名的包含将变量分配给表。你如何打开这些表?你能在这个过程中创建参考吗?我还将它们存储到一个列表中,而不是尝试为它们使用单独的 dt1、dt2、dt3...。
回复:根据表名的包含将变量分配给表。它们是由我无权访问的其他一些自动化 JMP 脚本创建的。
回复:根据表名的包含将变量分配给表。如果你能 100% 确定这些名字,那么我会把它们存储到一个列表中
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
New Table("ABC_25C_DC1_2024");
New Table("ABC_25C_DC2_2024");
New Table("ABC_25C_DC3_2024");
tablelist = Get Data Table List() << get name;
dc_tables = {};
For Each({tablename}, tablelist,
If(Starts With(tablename, "ABC_25C_DC"), // some pattern to catch correct tables
Insert Into(dc_tables, Datatable(tablename));
);
);
然后您可以使用 dc_tables[1] 等访问它们。
回复:根据表名的包含将变量分配给表。
我希望这能进一步澄清我想要实现的目标。

回复:根据表名的包含将变量分配给表。我不认为这为我提供了任何额外的说明,期望您可以捕获最后一个 _ 之后的表“类型”。如果您可以从末尾(最后一个 _ 之后)捕获表“类型”,您可以使用关联数组(或仍然是列表)。您可以使用 Word 捕获姓名的最后部分
Names Default To Here(1);
str = "ABC_25C_DC1_2024";
last_part = Word(-1, str, "_");
最终的想法仍然是相同的,找到某种方式获取对表的引用,将它们存储到某种数据结构(列表或关联数组)中,在需要时使用索引(列表)或键(关联数组)从该数据结构中获取表)。