连接表我必须使用 jsl 连接两个表。 第一个表如下所示:
但是,第二个表可以是这样的:

在此表中,Pred Form Molecule 1 (%)(2) 与 Molecule 1(%) 相同,并且值列中的数字是重复的。 如何指定联接仅考虑这些值之一?
要连接的第二个表可能如下所示:

在这种情况下,如何在连接中指定第一个表中的 Molecule 1 (%) 与需要连接的表中的 Pred Form Molecule1 (%)(2) 相同。
我需要的最终表应该是这样的:
感谢您的任何帮助。
回复:连接表@pmroz ,
谢谢你的澄清。 我的错是,想知道是否有更好的方法来解决我所缺少的问题。
@pmroz写道:
我建议重新编码以进行更改价值观在列中,不要更改列的名称。要使用重新编码选项,请突出显示要重新编码的列,然后单击栏 > 实用工具 > 重新编码(v12) 或列 > 重新编码(v13)。
回复:连接表我建议重新编码以进行更改价值观在列中,不要更改列的名称。要使用重新编码选项,请突出显示要重新编码的列,然后单击栏 > 实用工具 > 重新编码(v12) 或列 > 重新编码(v13)。
回复:连接表@tx尼尔森& @pmroz ,
如果可以的话,我想问一个问题,为什么您会建议在给定表结构的情况下重新编码/重命名列名?共享表的当前结构显示数据位于行中。 虽然我理解,人们总是可以转置数据并重命名列,想知道这是否是您推荐的方法? 请指教
回复:连接表您可以使用搜索(查找)对话框更改列名称或部分列名称

回复:连接表@Aam_jmp ,
我已经使用表尝试和联接测试了此代码。 如果需要,您可以适当扩展它以包含 try1。
Clear Log(); Clear Globals();
// Open Data Tables
dt1 = Open(FilePath1); // Where FilePath1 points to your file location for JOIN table
dt2 = Open(FilePath2); // Where FilePath2 points to your file location for try table
// Get Y values from main table
YVals = dt1:Y << Get Values;
// Get Col values from second table
ColVals = dt2:Col << Get Values;
// Loop through the values
for(i = 1, i <= N Items(YVals), i++,
for(r = 1, r <= N Items(ColVals), r++,
If(Contains(ColVals[r],YVals[i]),
ColVals[r] = YVals[i];
);
);
);
// Assign Corrected Values back to dt2
dt2 << New Column("CorrectedCol",Character,Continuous, << Set Values(ColVals));
// Join Tables
dt_Intermediate = dt1 << Join(With(dt2 ),
Select( :Y, :Quan Reqd ),
SelectWith( :Value ),
By Matching Columns( :Y = :CorrectedCol ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 )
);
// Remove Duplicates
dt_Results = dt_Intermediate << Summary(
Group( :Y, :Quan Reqd, :Value ),
Freq( "None" ),
Weight( "None" )
);
回复:连接表嗨 Uday,我已经添加了表格。
回复:连接表@Aam_jmp ,
请参阅下面的一些示例代码。 这应该适用于 JMP 中的任何数据表。 如果不是,我会要求您分享数据表的示例,我可以尝试看看问题是什么。
Clear Log(); Clear Globals();
// Open Sample Data
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
// Extract Column Names
ColNames = dt << Get Column Names("String");
// Extract Rows from a column
Cities = dt:city << Get Values;
// Change Column Name
Col = Column(dt,1);
Col << Set Name("City_Edit");
// Change Row Values
dt:City_Edit[7] = "TEMPE";
回复:连接表如何重新编码列名称?@pmroz此外,我的表的“重新编码”选项呈灰色。
回复:连接表Uday,我什至无法提取我猜测的列名,因为其中有数字和“%”符号。 你能指导我如何做吗? 目前,我正在编写这个脚本来提取名称。 谢谢。
dt = Open( "C:\Users\filepath\try1.jmp" );
col_names = dt << 获取列名();
显示(col_names);
回复:连接表栏 > 实用工具 > 重新编码将允许您将值更改为标准值。
回复:连接表@Aam_jmp ,
2步。
步骤1:提取表1中标题的值
步骤 2:循环遍历表 1 中的标题并在表 2 中查找相似的名称,然后更新该行以反映相同的名称
回复:连接表如何操作列中的名称使其看起来与需要连接的表相同?
回复:连接表@Aam_jmp ,
表之间的内连接将查找匹配的列。 您可以重命名表 2 中相同的行吗? 这将自动给出您想要的结果。 除非你的行太多而无法跟踪,否则这是一种方法。