保留重复的列你好,
我有 2 个数据表,这些表在某种程度上相似,其中测试参数(这意味着可能 30% 的列共享相同的名称)相同,因为它们因测试位置而异,因此测试结果也会不同。 我打算使用更新合并此表,同时维护第二个表列数据,但自动重命名这些列,以便我可以并排查看它们。 这可以通过脚本完成吗?
谢谢。
回复:保留重复的列谢谢我和吉姆。 在正常情况下是正确的,变量较少,表可以毫无问题地连接。
回复:保留重复的列为了扩展吉姆的观点,您将需要按行加入,因为您似乎没有典型连接中的密钥对。我很难理解为什么你会以这种方式加入表格; SN AX0001 与 STX0030 相关但与 STX0031 无关吗?如果是这样,也许您可以向这两个表添加另一列,以更有意义的方式连接它们。
回复:保留重复的列您要求的是连接 2 个数据表时 JMP 中采取的默认操作。如果两个数据表中都有同名的列,JMP 会重命名这些列。这是一个脚本版本,但是,如果您有 2 个表,您可以通过交互方式执行此操作
表==>加入
Names Default To Here( 1 );
dt1 = Open( "$SAMPLE_DATA\big class.jmp" );
dt2 = Open( "$SAMPLE_DATA\big class Families.jmp" );
Data Table( "big class Families" ) << Join( With( Data Table( "big class" ) ),
By Row Number );
回复:保留重复的列谢谢ih。 虽然这不完全是我想要的,但想法就在那里。 附件是我想要做的事情。加入 2 个数据表并自动重命名与第一个数据表匹配的第二个数据表列。 抱歉,如果我最初的消息有任何混淆。
回复:保留重复的列我不确定您到底想做什么,但是您可以使用脚本重命名列。如果打开每个数据表并保留对每个数据表的单独引用,则可以向所有数据表发送消息以重命名列:
Names default to here( 1 );
//Open two tables
dt1 = Open("$SAMPLE_DATA/Iris.jmp"); //first table
dt1 << Set Name( "Table 1" );
dt2 = Open("$SAMPLE_DATA/Iris.jmp"); //second table (different filename)
dt2 << Set Name( "Table 2" );
//Concatenate tables
dtJoined = dt1 << Concatenate( dt2 );
dtJoined << Set Name( "Combined" );
//Change column names
Column( dt1, "Sepal length" ) << Set Name( "Sepal_length" );
Column( dt2, "Sepal length" ) << Set Name( "Sepal_length" );
Column( dtJoined, "Sepal length" ) << Set Name( "Sepal_length" );如果更改大量列名,您可以使用函数来替换最后三行:
//Make a function to change column names in all tables
ChangeAllNames = function({original, new},
Column( dt1, original ) << Set Name( new );
Column( dt2, original ) << Set Name( new );
Column( dtJoined, original ) << Set Name( new );
);
//Then call the function
ChangeAllNames( "Sepal width", "Sepal_width" );
ChangeAllNames( "Petal length", "Petal_Length" );