你好,
對於我正在從事的一個項目,我創建了一個數據表列(動物編號平均),在其中我根據表 GroupAvg 中的基線值(治療 C)計算 VO2 的一些相對值。


在這種情況下,每次評估只有一個基線值(VO2、RQ、EE),如 groupAvg 中所示,因為它是幾天的平均值。 為此,我創建了以下效果很好的內容:
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
)
)
);現在我必須再次執行相同的操作,只是現在數據表(GroupAvgSEM)也包含天數,並且應該計算每一天的相對值(-6 到 30)。
當然,我可以執行與上面相同的操作並在所有日子中重複它,從而為每天創建一個帶有局部變量的非常長的腳本,但這似乎有點極端。
我正在研究對治療 C 數據進行子集化並將其拆分(按天)以便在公式內循環:
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
))
);這是可能的還是我應該以不同的方式解決這個問題?
朱莉弟兄
嘗試這個
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);