[英]For loop to get the average values of indices across multiple vectors (Time Series Average Plot)
我目前正在 R 中开发用于数据处理/分析的管道。
我的数据采用长格式(采样率 = 1000Hz)。 在整个数据框中,我为每个试验添加了一个 trialNum 变量,但是我在将我的数据重新整形为广泛时遇到了问题。
我正在尝试做的事情,我认为应该可以使用一个或两个 for 循环......是根据 trialNum 在索引 1:100 处获得 x 的平均值。
这是一个简单的版本...
瞳孔大小 | 试用号 |
---|---|
500 | 1 |
502 | 1 |
504 | 1 |
506 | 1 |
508 | 1 |
507 | 2 |
508 | 2 |
510 | 2 |
511 | 2 |
512 | 2 |
513 | 3 |
515 | 3 |
514 | 3 |
512 | 3 |
515 | 3 |
所以简单地说......我会得到每个 TrialNum 的瞳孔大小的第一个索引,然后平均在一起,然后添加到一个新变量(average_pupil_size)。
在这个例子中,每个试验都有 5 个输入,所以我最终会得到一个长度为 5 的可变输出......
average_size <- c(507, 508, 509, 510, 512)
然后我可以为我所有的试验绘制这个信号……我希望我已经清楚地解释了自己……为我头脑中的混乱道歉。
有谁知道如何做到这一点? 这有点超出我的想象。
提前致谢!
我们可以使用row_number()
在每个 TrialNum 中添加一个索引,然后在其中进行分组汇总。
library(dplyr)
df %>%
group_by(TrialNum) %>%
mutate(index = row_number()) %>%
group_by(index) %>%
summarize(avg = mean(Pupil.Size))
结果
# A tibble: 5 × 2
index avg
<int> <dbl>
1 1 507.
2 2 508.
3 3 509.
4 4 510.
5 5 512.
在基础 R 中,如果每个试验的数据长度相同,例如在这种情况下为 5,我们可以这样做:
rowMeans(unstack(df))
[1] 506.6667 508.3333 509.3333 509.6667 511.6667
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.