幫助將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 ......?看著那(這而() 這種迭代的功能。