我如何取R中每1500行的平均值,12次?

gab6jxml  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(115)

我有一组肌电图数据。有9列,每列代表一个肌肉。在每一列中,有18,000行。EMG数据在1000Hz下测量。每列包含12个单独的事件,每个1.5秒长。我想创建一个事件(1.5秒或1500帧长),这是12个单独事件的平均值。我有一种方法可以在excel中做到这一点,使用公式=AVERAGE(A2,A1502,A3002,A4502,A6002,A7502,A9002,A10502,A12002,A13502,A15002,A16502)并对整个列重复该公式。然而,我想在R中完成它,因为一旦我循环多个文件,这将更有效。
我尝试了几次迭代

obs_len <- 1500
avg_col <- apply(data, 2, function(x) {
  sapply(1:obs_len, function(i) {
    mean(x[(i-1)*n_obs + 1:i*n_obs])
  })
})````
as suggested by ChatGPT, but nothing worked. Some returned partial data that looked wrong along with NA values. Any suggestions are appreciated.
lhcgjxsq

lhcgjxsq1#

我会这么做

library(dplyr)
data %>%
  group_by(obs_id = (row_number()-1) %% 1500)) %>%
  summarize(across(1:9, mean))

这将创建一个名为obs_id的列,它测量我们在1500个观察周期中的位置,从0到1499(然后重复11次)。我们按这个数字分组,所以第一行和第1501和第3001等。在第0组,然后我们取第1列到第9列的平均值。这将输出一个9列× 1500行的数据框。

相关问题