帮助将SAS(9.1)迭代脚本转换为JSL ......?美好的一天。
我在尝试转换一些旧的SAS 9.1代码时遇到了麻烦迭代计算 (“直到”),进入JSL(我正在运行JMP 13)。
附件是我打开* .SAS文件时出现在JMP窗口中的原始SAS代码。我已经从原始SAS脚本中分离了脚本的相关子部分,并将其以* jsl格式附加为“mg_in_olivine.jsl”。
我还包括一个包含29条记录的虚拟数据集,并且已经计算了许多必需的参数(已隐藏了许多列的其余部分):
t_niK
肌酸
DV
xmg_gt
xfe_gt
xca_gt
我非常感谢能得到的任何帮助。
非常感谢。
Rob Preston(约翰内斯堡)。
Re:帮助将SAS(9.1)迭代脚本转换为JSL ......?想想我已经拥有它 - 我没有简单的IF语句的问题,它只是迭代。
再次感谢您的帮助,我很快就到了那里。
Re:帮助将SAS(9.1)迭代脚本转换为JSL ......?非常感谢Jim的帮助。
Re:帮助将SAS(9.1)迭代脚本转换为JSL ......?1。我鼓励您注意Mark关于阅读“脚本编写指南”的建议。 您在最新请求中要求的只是了解JMP中的“IF”语句。 将语法从语言转换为语言通常只是解决一些次要的语言问题。
2。 您也可以使用脚本索引
帮助==>脚本索引
不仅要看“IF”声明的文档,还要看一个例子
以下是IF函数的脚本索引中的示例。 它会直接翻译给您最新的请求。
Names Default To Here( 1 );
If( Random Uniform() < 0.5,
"heads",
"tails"
);
Re:帮助将SAS(9.1)迭代脚本转换为JSL ......?吉你好。
在脚本结束时,最终输出值应该是xmg_ol,因为ii是下一段代码的输入值(如下所示):
/ **现在适用于高卢等人对cr2o3的修正 - 见p。225 ** /
/ **请注意,在Gaul等人的Delta-Fo中,百分比为** /
/ **确保cr2o3> 0否则我们得到log ERROR ** /
如果cr2o3 <= 0那么
cr_corr = 0;
其他
cr_corr =( - 1.2901 * log10(cr2o3)+ 0.69)/100.0;
xmg_ol_corr = xmg_ol + cr_corr;
xmg_ol = xmg_ol_corr;
fo_oliv = xmg_ol * 100.0;
我有点无能(至少可以说)......但我感谢你的帮助。Re:帮助将SAS(9.1)迭代脚本转换为JSL ......?嗨,吉姆。非常感谢您的回复。
只是检查...
Re:帮助将SAS(9.1)迭代脚本转换为JSL ......?这可能是你在找什么?
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "xmg_ol_diff" );
For( i = 1, i <= N Rows( dt ), i++,
counter = 0;
While( Abs( dt:xmg_ol_diff[i] ) > 0.00001 | Is Missing( dt:xmg_ol_diff[i] ) == 1,
counter++;
If( counter > 100, Break() );
logKd = (902 + dt:dv[i] + (dt:xmg_ol_est[i] - dt:xfe_ol_est[i]) * (498 + 1.51 * (dt:PCr[i] - 30)) - 98 * (dt:xmg_gt[i] - dt:xfe_gt[i])
+1347 * dt:xca_gt[i]) / dt:t_niK[i] - 0.357;
Kd = Exp( LogKd );
xmgfe_ol = Kd * (dt:xmg_gt[i] / dt:xfe_gt[i]);
xmg_ol = xmgfe_ol / (1 + xmgfe_ol);
dt:xmg_ol_diff[i] = xmg_ol - dt:xmg_ol_est[i];
dt:xmg_ol_est[i] = xmg_ol; /** reset xmg_ol_est for next iteration **/
dt:xfe_ol_est[i] = 1.0 - xmg_ol;
);
);

Re:帮助将SAS(9.1)迭代脚本转换为JSL ......?谢谢马克。
Re:帮助将SAS(9.1)迭代脚本转换为JSL ......?看着那(这而() 这种迭代的功能。