行迭代並創建新列你好
我正在嘗試創建一個新列來計算AUC。只要動物編號相同,就應計算該值。
到目前為止,我設法創建了一個新列併計算值:
(Data Table( "jmp forum row ite" ) << New Column( "AUC per animal",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
0.5 * (:Name( "VO2(1)-[ml/h/kg]" ) + Lag( :Name( "VO2(1)-[ml/h/kg]" ), -1 )) * (
:Name( "Time since dosing-[hours]" ) - Lag( :Name( "Time since dosing-[hours]" ), 1 ))
)
));
但是當我嘗試包括對動物編號的行迭代檢查時。相同的jmp告訴我,這不應該結合在一起。
For Each Row( If( :Animal No. == Lag( :Animal No., -1 ), Formula(), "no value" ) );
應該分幾個步驟完成還是有更好的方法呢?
回复:行迭代並創建新列你好 @JulieSAppel
最終結果是矛盾的。因為您要告訴Jump在同一欄中輸入數字或字符。該程序無法接受。嘗試使用缺失值(或零)代替“無值”
回复:行迭代並創建新列實際上,我從來沒有把那個字符串放在那兒,只是為了證明如果動物沒有,該單元應該是空的。與下面的行不同
回复:行迭代並創建新列您遇到的問題是,您試圖修改已經具有公式的列的公式,而您真正需要做的是在公式的初始調用中完成所有這些操作。 如果您將初始公式修改為以下公式,我相信您將擁有所需的東西。
Data Table( "jmp forum row ite" ) << New Column( "AUC per animal",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( :Animal No. == Lag( :Animal No., -1 ),
0.5 * (:Name( "VO2(1)-[ml/h/kg]" ) + Lag( :Name( "VO2(1)-[ml/h/kg]" ), -1 )) * (
:Name( "Time since dosing-[hours]" ) - Lag( :Name( "Time since dosing-[hours]" ), 1 )),
.
)
)
);
如果要修改現有列的公式,則必須換出整個公式。 請參閱以下示例:
Data Table( "jmp forum row ite" ) << New Column( "AUC per animal",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
0.5 * (:Name( "VO2(1)-[ml/h/kg]" ) + Lag( :Name( "VO2(1)-[ml/h/kg]" ), -1 )) * (
:Name( "Time since dosing-[hours]" ) - Lag( :Name( "Time since dosing-[hours]" ), 1 ))
)
)
;
wait(5); // pause for 5 seconds to allow for the viewing of the data table with the original formula
:name("AUC per animal") << Formula(
If( :Animal No. == Lag( :Animal No., -1 ),
0.5 * (:Name( "VO2(1)-[ml/h/kg]" ) + Lag( :Name( "VO2(1)-[ml/h/kg]" ), -1 )) * (
:Name( "Time since dosing-[hours]" ) - Lag( :Name( "Time since dosing-[hours]" ), 1 )),
.
)
);回复:行迭代並創建新列非常感謝。這是有道理的(並且效果很好)。
我一直在考慮對每行迭代使用a。為什麼這裡沒有選擇呢?
回复:行迭代並創建新列非常感謝。這是有道理的(並且效果很好)。 回复:行迭代並創建新列另外,請注意如何使用Lag()函數。
// previous row
Lag( :Animal No., 1 )
// next row
Lag( :Animal No., -1 )
+1的延遲會訪問上一行。-1滯後訪問下一行。