你好,
我想根据数据表的名称连接数据表。
例如,我有 6 个数据表,它们的名称类似于 M1a M1b M2a M2b M3a M3b。 所以我想将所有 M1 设备连接在一起等。但是,M1 部分会因名称而异,因此我需要脚本能够获取名称,然后比较名称的一部分。
非常感谢任何入门帮助
桌子已经开放了吗? 如果不是,它们是否在同一个文件夹中,并且该文件夹中是否还有其他文件?
<< 获取名称可用于获取数据表的名称和获取数据表列表()打开的数据表的列表。 要比较数据表名称,有很多选项,使用哪个选项取决于您的数据表名称(正则表达式是一种选项)。
这是一个脚本,可以帮助您开始将最终脚本组合在一起。它创建一些用于示例的示例表,然后查找它们并匹配名称中的前 2 个字符,最后将它们连接起来。
Names Default To Here( 1 );
// create sample data tables
For( i = 1, i <= 6, i++,
New Table( "M" || Char( Mod( i, 3 ) + 1 ) || Char( i ), New Column( "D" ) );
Data Table( "M" || Char( Mod( i, 3 ) + 1 ) || Char( i ) ) << add rows( 1 );
Column( Data Table( "M" || Char( Mod( i, 3 ) + 1 ) || Char( i ) ), 1 )[1] = i;
);
// Find all data tables that match Mx
concatTableList = {};
shortNameList = {};
For( i = 1, i <= N Table(), i++,
If( Starts With( Data Table( i ) << get name, "M" ),
Insert Into( concatTableList, Data Table( i ) << get name );
Insert Into( shortNameList, Substr( Data Table( i ) << get name, 1, 2 ) );
)
);
// Find the unique key values
theKeys = Associative Array( shortNameList ) << get keys;
// Create the concatenated tables
For Each( {key}, theKeys,
catList = {};
For Each( {tableName}, concatTableList,
If( Starts With( tableName, key ),
Insert Into( catList, tableName )
)
);
If( N Items( catList ) > 1,
dt = New Table( key );
For Each( {cat}, catList, dt << concatenate( Data Table( cat ), append to first table ) );
);
);您也可以考虑使用多个文件导入。 将所有表组合成单个表,然后使用源列将它们分成子集(根据您想要的组的源列创建新列)或使用通配符 * 多次运行 MFI(匹配零个或多个字符),? (精确匹配一个字符)和 ; (分隔不同的文件名模式)通过一次 MFI 运行获取所有单个组

我认为这行不通,因为它们都来自同一个 Excel 工作簿。 我打开此工作簿,每个工作表都变成一个新的数据表。 有办法让它发挥作用吗?
如果只是一个 Excel 文件,您可以使用 Excel 导入向导。

启用“连接工作表并尝试匹配列”和“连接时使用工作表名称创建列”。 JMP 表中有数据后,创建分组列并根据需要创建子集。