Itération de ligne et création d'une nouvelle colonneSalut,
J'essaie de créer une nouvelle colonne où je calcule l'AUC. Cette valeur ne doit être calculée que si l'animal no est identique.
Jusqu'à présent, j'ai réussi à créer une nouvelle colonne et à calculer les valeurs:
(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 ))
)
));
Mais lorsque j'essaie d'inclure une itération de ligne, je recherche l'animal no. être identique jmp me dit que cela ne devrait pas être combiné.
For Each Row( If( :Animal No. == Lag( :Animal No., -1 ), Formula(), "no value" ) );
Cela devrait-il être fait en plusieurs étapes ou y a-t-il une meilleure façon de le faire?
Re: Itération de ligne et création d'une nouvelle colonnesalut @JulieSAppel
les résultats finaux sont contradictoires. puisque vous dites saut, mettez un chiffre ou un caractère dans la même colonne. le programme ne peut tout simplement pas le prendre. essayez de mettre une valeur manquante (ou zéro) au lieu de "aucune valeur"
Re: Itération de ligne et création d'une nouvelle colonneEn fait, je n'ai jamais mis cette ficelle là-dedans, c'était uniquement pour démontrer que la cellule devait être vide si l'animal no. n'est pas identique à la ligne ci-dessous
Re: Itération de ligne et création d'une nouvelle colonneLe problème que vous rencontrez, c'est que vous essayez de modifier la formule d'une colonne qui en contient déjà une, et ce que vous devez vraiment faire, c'est de faire tout cela lors de l'appel initial de la formule. Si vous modifiez votre formule initiale à celle ci-dessous, je pense que vous obtiendrez ce que vous voulez.
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 )),
.
)
)
);
Si vous souhaitez modifier une formule pour une colonne déjà existante, vous devez échanger la formule entière. Voir l'exemple ci-dessous:
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 )),
.
)
);Re: Itération de ligne et création d'une nouvelle colonneMerci beaucoup. Cela a du sens (et fonctionne parfaitement).
Je cherchais cependant à utiliser une itération pour chaque ligne. Pourquoi n'est-ce pas une option ici?
Re: Itération de ligne et création d'une nouvelle colonneMerci beaucoup. Cela a du sens (et fonctionne parfaitement). Re: Itération de ligne et création d'une nouvelle colonneFaites également attention à la façon dont vous utilisez la fonction Lag ().
// previous row
Lag( :Animal No., 1 )
// next row
Lag( :Animal No., -1 )
Un décalage de +1 accède à la ligne précédente. Un décalage de -1 accède à la ligne suivante.