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));
//...