Riga iterazione e creazione di una nuova colonnaCiao,
Sto cercando di creare una nuova colonna in cui calcolo l'AUC. Questo valore dovrebbe essere calcolato solo se l'animale non è identico.
Finora sono riuscito a creare una nuova colonna e calcolare i valori:
(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 ))
)
));
Ma quando provo a includere un'iterazione di riga che controlla l'animale no. essendo identico jmp mi dice che questo non dovrebbe essere combinato.
For Each Row( If( :Animal No. == Lag( :Animal No., -1 ), Formula(), "no value" ) );
Questo dovrebbe essere fatto in più passaggi o esiste un modo migliore per farlo?
Ri: riga iterazione e creazione di una nuova colonnaCiao @JulieSAppel
i risultati finali sono contrastanti. poiché stai dicendo a Jump di inserire un numero o un personaggio nella stessa colonna. il programma non ce la fa proprio. prova a mettere un valore mancante (o zero) invece di "nessun valore"
Ri: riga iterazione e creazione di una nuova colonnaIn realtà non ho mai messo quella stringa lì dentro, è stato solo per dimostrare che la cella dovrebbe essere vuota se l'animale no. non è identico alla riga seguente
Ri: riga iterazione e creazione di una nuova colonnaIl problema che stai riscontrando è che stai tentando di modificare la formula di una colonna che ha già una formula e ciò che devi veramente fare è fare tutto ciò nell'invocazione iniziale della formula. Se modifichi la tua formula iniziale con quella qui sotto, credo che avrai ciò che desideri.
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 )),
.
)
)
);
Se si desidera modificare una formula per una colonna già esistente, è necessario sostituire l'intera formula. Vedi l'esempio seguente:
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 )),
.
)
);Ri: riga iterazione e creazione di una nuova colonnaMolte grazie. Questo ha senso (e funziona perfettamente).
Stavo cercando di usare una per ogni iterazione di riga. Perché questa non è un'opzione qui?
Ri: riga iterazione e creazione di una nuova colonnaMolte grazie. Questo ha senso (e funziona perfettamente). Ri: riga iterazione e creazione di una nuova colonnaInoltre, fai attenzione a come usi la funzione Lag ().
// previous row
Lag( :Animal No., 1 )
// next row
Lag( :Animal No., -1 )
Un ritardo di +1 accede alla riga precedente. Un ritardo di -1 accede alla riga successiva.