JMP 脚本编写问题(乘法函数)你好,
我在使用 jmp 中的乘法函数时遇到问题,我想在将值放入表中之前对其进行评估。 我使用了调试脚本,两个变量计算正确,但没有相乘。 有人可以帮忙吗?
fl = Files In Directory( cal_path, recursive );
fli = {};
for( y = 1, y<=nitems(fl), y++,
if(left(fl[y],1) == "~", remove from(fl, y));
insertinto(fli,left(substitute(substitute(fl[y],"-",""),"_",""),9));
);
grfactor1 = {};
adjgr1 = {};
agr1 = {};
For( i = 1, i <= N Items( fl ), i++,
currentfile = cal_path || fl[i];
dt = Open( currentfile );
Current Data Table( dt );
name_list = dt << get column names( string );
If( Contains( name_list, "Active Multi" ) == 0 ,
Insert Into( grfactor1, "" );
Insert Into( adjgr1, "" );
close(dt, nosave);
Continue()
);
grfa = :name( "Active Multi 2" )[8];
adjgra = :name( "Active Multi 2" )[20];
Insert Into( grfactor1, grfa );
Insert Into( adjgr1, adjgra );
Close( dt, nosave );
);
agr1=adjgr1;
Multiply to (agr1, grfactor1);
ct = New Table( "historical_data" );
ct << New Column( "GRF1", numeric, values( Eval( grfactor1 ) ) );
ct << New Column( "GRU1", numeric, values( Eval( adjgr1 ) ) );
ct << New Column( "GR1", numeric, formula( GRU1 * GRF1 ) );
ct << new column( "check 1", numeric, values(Eval ( agr1 )));先感谢您。
回复:JMP 脚本编写问题(乘法函数)完美,谢谢大家。 现在它正在按预期工作。
回复:JMP 脚本编写问题(乘法函数)在这个例子中它看起来像字符串,而不是数字。 如果您的数据也是这种情况,您将需要转换为数字,因为字符串将无法正确相乘。 转换可能可以在循环中有效地完成:
//...
grfa = Num(:name("Active Multi 2")[8]);
adjgra = Num(:name("Active Multi 2")[20]);
//...
回复:JMP 脚本编写问题(乘法函数)这正是我想要做的,我已经使用了 show 函数(好主意),它返回了这个:
adjgr = {"2.763", .};
grfactor = {"0.291", .};
agr = {"2.763", .};
adjgr = {"2.763", .};
grfactor = {"0.291", .};
我目前只有 2 个文件,其中 1 个不包含任何内容,另一个只包含随机数。
正如您所看到的,它仅对 adjgr 进行评估,并且不会将其乘以 grfactor。
回复:JMP 脚本编写问题(乘法函数)我正在尝试删除列计算并在脚本中进行计算。 新列脚本中的公式有效并且正在正确评估其
Multiply to (agr1, grfactor1);
这应该给我相同的值,但似乎只将变量评估为 agr1 值。
回复:JMP 脚本编写问题(乘法函数)我认为你的代码正在尝试做这样的事情;我之前没有尝试过值列表:
a={1,2};
b={3,4};
show(a,b);
c=multiplyto(a,b);
show(a,b,c);
a = {1, 2}; // 输入要乘以()
b = {3, 4};
a = {3, 8}; // 这是通过乘法 to() 更新的
b = {3, 4};
c = {3, 8}; //这是由multiply to()返回的
请务必检查 JMP 日志中的错误消息,并使用 show(a,b) 函数将一些值写入日志以查看发生了什么。
回复:JMP 脚本编写问题(乘法函数)尝试使用作用域“:”来指示 GRU1 和 GRF1 是列名称。 如果表很大,插入 Wait() 命令也可能有所帮助,以允许输入列在计算公式之前完全完成。
//...
Wait(0);
ct << New Column("GR1", numeric, formula(:GRU1 * :GRF1));
//...