行の反復と新しい列の作成こんにちは、
AUCを計算する新しい列を作成しようとしています。この値は、動物noが同一である場合にのみ計算する必要があります。
これまでのところ、新しい列を作成して値を計算できました。
(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" ) );
これはいくつかのステップで実行する必要がありますか、それを行うより良い方法がありますか?
再:行の反復と新しい列の作成こんにちはじゅったんのさやにゃん
最終結果は矛盾しています。同じ列に数字または文字を入れるようにジャンプしているからです。プログラムはそれを取ることができません。「値なし」の代わりに欠損値(またはゼロ)を入れてみてください
再:行の反復と新しい列の作成私は実際にその文字列をそこに決して入れませんでした。下の行と同一ではありません
再:行の反復と新しい列の作成あなたが抱えている問題は、すでに式を持っている列の式を変更しようとしていることであり、あなたが本当にしなければならないことは、式の最初の呼び出しですべてを行うことです。 最初の式を以下の式に変更する場合、あなたはあなたが望むものを持っていると信じています。
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 )),
.
)
);再:行の反復と新しい列の作成どうもありがとう。それは理にかなっています(そして完全に動作します)。
ただし、for each行の反復の使用を検討していました。なぜここに選択肢がないのですか?
再:行の反復と新しい列の作成どうもありがとう。それは理にかなっています(そして完全に動作します)。 再:行の反復と新しい列の作成また、Lag()関数の使用方法にも注意してください。
// previous row
Lag( :Animal No., 1 )
// next row
Lag( :Animal No., -1 )
+1のラグは前の行にアクセスします。-1ラグは次の行にアクセスします。