Ciao,
Per un progetto su cui sto lavorando ho creato una colonna della tabella dati (Animal No.Avg) in cui sto calcolando alcuni valori relativi per VO2 in base a un valore di base (Trattamento C) dalla tabella GroupAvg.


In questo caso esiste un solo valore di riferimento per valutazione (VO2, RQ, EE) come si vede in groupAvg poiché è una media di diversi giorni. Per questo ho creato il seguente che funziona bene:
VarVehicleVo2 = :Name( "Mean(Mean(VO2-[ml/min]))" )[Data Table( "GroupAvg" ) <<
Get rows Where( Contains( :Treatment, "C" ))];
Animal No.Avg << New Column( "VO2 absolute relative (%)",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Local( {t0 = VarVehicleVo2()},
(:Name( "Mean(Mean(VO2-[ml/min]))" ) / t0) * 100
)
)
);Ora devo fare di nuovo lo stesso, solo che ora la tabella dei dati (GroupAvgSEM) contiene anche i giorni e i relativi valori dovrebbero essere calcolati per ogni giorno (da -6 a 30).
Naturalmente, posso fare lo stesso di cui sopra e ripeterlo per tutti i giorni, creando così uno script molto lungo con una variabile locale per ogni giorno, ma sembra un po' estremo.
Stavo cercando di suddividere i dati del trattamento C e dividerli (in giorni) per scorrerli all'interno della formula:
VarTable = GroupAvgSEM << select where(
Contains( :Treatment, "ehicle" )) << subset(
output table name( "VarTable" ), selected rows( 1 ), selected columns( 0 ));
VarVO2 = VarTable << split(
Output table name("VarVO2"),
Split By( :Day no ),
Split( :Name( "Mean(Mean(VO2-[ml/min]))" ) ),
Remaining Columns( Drop All ),
Sort by Column Property
);
Animal No.Avg << New Column("VO2 absolute relative (%)",
Numeric, <BR /> Formula(
Local( {//loop through VarVO2 column values},
(:Name( "Mean(Mean(VO2-[ml/min]))" ) / /*VarVO2 column values*/) * 100
))
);È possibile o dovrei farlo in un modo diverso?
Fra Giulia
Prova questo
dt = Data Table("Animal No.Avg");
tb = dt <<
Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table(
Analysis Columns( :Name( "Mean(VO2-[ml/min])" ) ),
Statistics( Mean )
),
Row Table( Grouping Columns( :Day no ) )
),
Local Data Filter(
Add Filter( columns( :Treatment ), Where( :Treatment == "C" ) )
)
);
dt1 = tb << make into data table;
dt2 = dt << Join(
With( dt1 ),
Select(
:Treatment,
:Animal No.,
:Day no,
:N Rows,
:Name( "Mean(VO2-[ml/min])" ),
:Name( "Mean(RQ)" ),
:Name( "Mean(EE-[kcal/h])" )
),
SelectWith( :Name( "Mean(Mean(VO2-[ml/min]))" ) ),
By Matching Columns( :Day no = :Day no ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 )
);
dt2 << New Column("Relative VO2",
Formula(:Name( "Mean(VO2-[ml/min])" )/:Name( "Mean(Mean(VO2-[ml/min]))" ) * 100)
);
tb << Close Window;
close(dt1, NoSave);