Zeileniteration und Erstellen einer neuen SpalteHallo,
Ich versuche, eine neue Spalte zu erstellen, in der ich AUC berechne. Dieser Wert sollte nur berechnet werden, solange Tier-Nr. Identisch ist.
Bisher habe ich es geschafft, eine neue Spalte zu erstellen und die Werte zu berechnen:
(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 ))
)
));
Aber wenn ich versuche, eine Zeileniteration für Tier-Nr. identisches jmp sagt mir, dass dies nicht kombiniert werden sollte.
For Each Row( If( :Animal No. == Lag( :Animal No., -1 ), Formula(), "no value" ) );
Sollte dies in mehreren Schritten geschehen oder gibt es eine bessere Möglichkeit, dies zu tun?
Betreff: Zeileniteration und Erstellen einer neuen SpalteHallo @JulieSAppel
Die Endergebnisse sind widersprüchlich. da Sie jump mitteilen, eine Zahl oder ein Zeichen in dieselbe Spalte zu setzen. Das Programm kann es einfach nicht aushalten. versuche einen fehlenden Wert (oder Null) anstelle von "kein Wert" zu setzen
Betreff: Zeileniteration und Erstellen einer neuen SpalteIch habe die Schnur dort eigentlich nie reingelegt, nur um zu demonstrieren, dass die Zelle leer sein sollte, wenn das Tier nicht. ist nicht identisch mit der folgenden Zeile
Betreff: Zeileniteration und Erstellen einer neuen SpalteDas Problem, das Sie haben, besteht darin, dass Sie versuchen, die Formel einer Spalte zu ändern, in der bereits eine Formel vorhanden ist, und dass Sie dies alles beim ersten Aufruf der Formel tun müssen. Wenn Sie Ihre anfängliche Formel auf die folgende ändern, werden Sie vermutlich das haben, was Sie wollen.
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 )),
.
)
)
);
Wenn Sie eine Formel für eine bereits vorhandene Spalte ändern möchten, müssen Sie die gesamte Formel austauschen. Siehe folgendes Beispiel:
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 )),
.
)
);Betreff: Zeileniteration und Erstellen einer neuen SpalteDanke vielmals. Das macht Sinn (und funktioniert perfekt).
Ich habe versucht, eine für jede Zeileniteration zu verwenden. Warum ist das hier keine Option?
Betreff: Zeileniteration und Erstellen einer neuen SpalteDanke vielmals. Das macht Sinn (und funktioniert perfekt). Betreff: Zeileniteration und Erstellen einer neuen SpalteSeien Sie auch vorsichtig, wie Sie die Lag () - Funktion verwenden.
// previous row
Lag( :Animal No., 1 )
// next row
Lag( :Animal No., -1 )
Eine Verzögerung von +1 greift auf die vorherige Zeile zu. Eine Verzögerung von -1 greift auf die nächste Zeile zu.