将另一个数据表文件中的值添加到当前数据表文件中你好,
您好,我对 JSL 脚本有疑问(对此非常新!)
我有两个数据文件 - 表 A 和表 B。
表 A:-
表 B:-

我想添加值表 B 列名称“偏移量”到表 A 中列组“测试”的每一行并生成一个添加了值的新数据表文件。
PS- 表 A 文件中有 100 多列。 如何使用 for 循环迭代所有行和列?
这是我尝试开始的。 对此有什么想法或更有效的方法吗?
</CODE></PRE><PRE class="language-jsl"><CODE>Names Default To Here( 1 );
dt = Data Table( "Table A" );
dtOffset = Data Table( "Table B" );
For Each Row(
dt:Current = dt:Current + dtOffset:Offset[1];
dt:Voltage = dt:Voltage + dtOffset:Offset[2];
dt:Resistance = dt:Resistance + dtOffset:Offset[3];
dt:Inductance = dt:Inductance + dtOffset:Offset[4];
dt:Capacitance = dt:Capacitance + dtOffset:Offset[5];
dt:Power = dt:Power + dtOffset:Offset[6];
dt:Temperature = dt:Temperature + dtOffset:Offset[7];
dt:Humidity = dt:Humidity + dtOffset:Offset[8];
dt:Pressure = dt:Pressure + dtOffset:Offset[9];
dt:Suseptance = dt:Suseptance + dtOffset:Offset[10];
);
Names Default To Here( 1 );
dt = Data Table( "Table A" );
dtOffset = Data Table( "Table B" );
colList = dt << get column names(string);
For( i = 1, i <= N Items( colList ), i++,
// Find the offset value in the dtOffset(Table B) data table
// Because the column name from Table A may not have an offset
// in Table B that has to be accounted for
theRow = dtOffset << get rows where( dtOffset:Tests == colList[i] );
show(i,nrows(therow));
// If no rows are returned, no offset was found
If( N Rows( theRow ) == 1,
offset = dtOffset:Offset[theRow[1]];
For( k = 1, k <= N Rows( dt ), k++,
Column( dt, i )[k] = Column( dt, i )[k] + offset
);
);
</CODE></PRE><P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2687" target="_blank">@tx尼尔森</A><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/6657" target="_blank">@ih</A><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/14366" target="_blank"> @jthi</A><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/6878" target="_blank"> @杰夫·珀金森</A></P><P> </P><P> </P></LINGO-BODY><LINGO-LABS id="lingo-labs-412679" slang="en-US" mode="NONE"><LINGO-LABEL>自动化和脚本编写</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-413205" slang="en-US" mode="NONE">回复:将另一个数据表文件中的值添加到当前数据表文件中</LINGO-SUB><LINGO-BODY id="lingo-body-413205" slang="en-US" mode="NONE"><P>嗯,不只是我。 我以前看过类似的帖子</P></LINGO-BODY><LINGO-SUB id="lingo-sub-413030" slang="en-US" mode="NONE">回复:将另一个数据表文件中的值添加到当前数据表文件中</LINGO-SUB><LINGO-BODY id="lingo-body-413030" slang="en-US" mode="NONE"><P>社区讨论论坛不是为您编写 JMP 脚本的地方!您需要花时间学习 JSL,并使用论坛来帮助您解决您不理解的具体问题。</P></LINGO-BODY><LINGO-SUB id="lingo-sub-413029" slang="en-US" mode="NONE">回复:将另一个数据表文件中的值添加到当前数据表文件中</LINGO-SUB><LINGO-BODY id="lingo-body-413029" slang="en-US" mode="NONE"><P>代码运行时的日志文件条目是:</P>
<PRE>not enough arguments in access or evaluation of 'For' , For/*###*/(i = 1 ; N Rows( dt ) ; i++, Column( dtOffset )[i] = dt:colList[i]
+dtOffset:Offset[i])
at line 7 in Script 5.jsl</PRE>
<P>这告诉您,您使用的 For() 函数语法不正确。</P>
<P>正确的定义可以在脚本索引或脚本指南中找到。另外,如果您查看 For() 函数的实现和我提供的示例,您的版本并不相同。</P>
<P>您的解决方案将要求您循环遍历表 A 中的列。对于每一列,您需要获取需要应用于表 A 列中的值的偏移值,然后循环遍历该列中的所有行,应用正确的偏移量。<CODE class=" language-jsl">
回复:将另一个数据表文件中的值添加到当前数据表文件中你好@ih ,
我想添加值表 B 列名称“偏移量”到表 A 中列组“测试”的每一行并生成一个添加了值的新数据表文件。 表A中有100多列。 如何使用循环语法来迭代每一行和每一列?
这是我尝试开始的
Names Default To Here( 1 );
dt = Data Table( "Table A" );
dtOffset = Data Table( "Table B" );
colList = dt << get column names;
For(i=1; N Rows(dt); i++,
Column(dtOffset)[i] = dt:colList[i] + dtOffset:Offset[i];
);
感谢您的建议
回复:将另一个数据表文件中的值添加到当前数据表文件中@tx尼尔森
这是我尝试过的。 我不确定出了什么问题。 你能看一下吗?
Names Default To Here( 1 );
dt = Data Table( "Table A" );
dtOffset = Data Table( "Table B" );
colList = dt << get column names;
For(i=1; N Rows(dt); i++,
Column(dtOffset)[i] = dt:colList[i] + dtOffset:Offset[i];
);
回复:将另一个数据表文件中的值添加到当前数据表文件中您可以使用
colList = dt << get column names;
获取数据表中的列名
然后使用 For() 循环
For(i=1,i<=N Items(colList), i++,
.......
.......
.......
);
执行您需要对每一列执行的操作。
这些都记录在脚本指南和脚本索引......以及示例中
回复:将另一个数据表文件中的值添加到当前数据表文件中如何使用循环来执行加法。 表A中有超过100列?
回复:将另一个数据表文件中的值添加到当前数据表文件中非常感谢@tx尼尔森你真是天才:)
回复:将另一个数据表文件中的值添加到当前数据表文件中- 请花时间阅读脚本指南并熟悉脚本索引。
- 如果您需要温习一般编程技能,互联网上有大量网站可以提供帮助。
- 这是一个简单的脚本,可以完成您想要的操作
Names Default To Here( 1 );
dt = Data Table( "Table A" );
dtOffset = Data Table( "Table B" );
For Each Row(
dt:Current = dt:Current + dtOffset:Offset[1];
dt:Voltage = dt:Voltage + dtOffset:Offset[2];
dt:Resistance = dt:Resistance + dtOffset:Offset[3];
dt:Inductance = dt:Inductance + dtOffset:Offset[4];
dt:Capacitance = dt:Capacitance + dtOffset:Offset[5];
dt:Power = dt:Power + dtOffset:Offset[6];
dt:Temperature = dt:Temperature + dtOffset:Offset[7];
dt:Humidity = dt:Humidity + dtOffset:Offset[8];
dt:Pressure = dt:Pressure + dtOffset:Offset[9];
dt:Suseptance = dt:Suseptance + dtOffset:Offset[10];
);