1

我收集了几个主题的数据,在一小时内每 15 秒一次,按时段划分。这是数据框的样子,时间是“Temps”,主题是“Sujet”,周期由“Palier”决定。

    data.frame':    2853 obs. of  22 variables:
 $ Temps         : Factor w/ 217 levels "00:15","00:30",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ Sujet         : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Test          : Factor w/ 3 levels "VO2max","Tlim",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Palier        : int  1 1 1 1 1 1 1 1 1 1 ...
 $ RPE           : int  8 8 8 8 8 8 8 8 8 8 ...
 $ Rmec          : num  39.1 27.5 23.3 21.5 20.3 21.7 20.5 20.7 20.2 20.1 ...

这里是data.frame的一瞥:

  Temps Sujet   Test Palier RPE Rmec Pmec Pchim Fr   Vt    VE  FeO2 FeCO2  VO2 VCO2  RER  HR VO2rel     VE.VO2    VE.VCO2
1 00:15     1 VO2max      1   8 39.1  185 473.6 19 1854 34.60 16.24  4.48 1353 1268 0.94 121   17.6 0.02557280 0.02728707
2 00:30     1 VO2max      1   8 27.5  185 672.4 17 2602 44.30 15.77  4.78 1921 1731 0.90 124   25.0 0.02306091 0.02559214
3 00:45     1 VO2max      1   8 23.3  185 794.5 18 2793 50.83 15.63  4.85 2270 2015 0.89 131   29.6 0.02239207 0.02522581
4 01:00     1 VO2max      1   8 21.5  185 860.3 20 2756 55.76 15.68  4.88 2458 2224 0.90 137   32.0 0.02268511 0.02507194
5 01:15     1 VO2max      1   8 20.3  185 909.3 23 2709 61.26 15.84  4.88 2598 2446 0.94 139   33.8 0.02357968 0.02504497
6 01:30     1 VO2max      1   8 21.7  185 853.7 21 2899 59.85 16.00  4.89 2439 2395 0.98 140   31.8 0.02453875 0.02498956

每个“Palier”持续约 5 分钟,有 5 到 10 个“Palier”。对于每个主题和“Palier”,我需要计算所有变量最后 2 分钟的平均值。我还没有用 dcast() 或 ddply() 弄明白,但我是新手!

任何帮助将非常感激!

4

1 回答 1

2

如果你把它变成一个data.table(你必须安装),你可以这样做

library(data.table)
dt = as.data.table(d)  # assuming your existing data frame was called d
last.two.min = dt[, mean(tail(Rmec, 9)), by=Sujet]

这假设您的原始数据框被调用d,并且您想要最后 9 个项目(因为它是每 15 秒 - 如果您想要从 58:15 到 60:00,您可能需要最后 8 个)。

我认为这Rmec是您想要获得平均值的变量。如果您想要获得多个平均值,您可以执行以下操作:

last.two.min = dt[, list(mean.Rmec=mean(tail(Rmec, 9)),
                        mean.RPE=mean(tail(RPE, 9))), by=Sujet]
于 2013-04-13T03:46:57.597 回答