Hallo,
Für ein Projekt, an dem ich arbeite, habe ich eine Datentabellenspalte (Animal No.Avg) erstellt, in der ich einige relative Werte für VO2 basierend auf einem Basiswert (Behandlung C) aus der Tabelle GroupAvg berechne.


In diesem Fall gibt es nur einen Basiswert pro Bewertung (VO2, RQ, EE), wie er in „groupAvg“ zu sehen ist, da es sich um einen Durchschnitt über mehrere Tage handelt. Dafür habe ich Folgendes erstellt, was gut funktioniert:
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
)
)
);Jetzt muss ich das Gleiche noch einmal tun, nur enthält die Datentabelle (GroupAvgSEM) jetzt auch Tage und die relativen Werte sollten für jeden Tag berechnet werden (-6 bis 30).
Natürlich kann ich das Gleiche wie oben tun und es für alle Tage wiederholen und so ein sehr langes Skript mit einer lokalen Variablen für jeden Tag erstellen, aber das erscheint mir etwas extrem.
Ich habe darüber nachgedacht, die Behandlungs-C-Daten zu unterteilen und sie (in Tagen) aufzuteilen, um sie innerhalb der Formel zu durchlaufen:
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
))
);Ist das möglich oder sollte ich das anders angehen?
Br. Julie
Versuche dies
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);