r语言 - 如何从向量计算特定值的平均值



假设我有一个向量

x <- rnorm(100, 0, 1)

我想计算第 1、21、41、61 和 81 个值的平均值。然后是第 2、22、42、62 和 82 个值,依此类推。直到我有一个 20 个值的最终向量。

有没有办法用基础 R 做到这一点?

提前谢谢你。

将尺寸更改为 20x5 矩阵后,可以使用rowMeans

set.seed(42)
x <- rnorm(100, 0, 1)
rowMeans(matrix(x, nrow = 20))
# [1]  0.48315816 -0.45278238  0.32392765  0.47993455 -0.19808804
# [6]  0.36215278  0.11231354  0.08840571  0.78022995  0.29911804
#[11]  0.48624850  0.32825670  0.49916741  0.03855425 -0.23844465
#[16] -0.21686072 -0.15059661 -0.88259531 -1.73071168  0.23890847

另一种选择是tapplyrep_len

out <- tapply(x, INDEX = rep_len(1:20, length(x)), mean)

结果

head(out)
#          1          2          3          4          5          6 
#  0.4831582 -0.4527824  0.3239276  0.4799346 -0.1980880  0.3621528
您可以使用

sapply来检查1:20并将其添加到0:4*20中,如下所示:

sapply(1:20, function(i) mean(x[i + 0:4*20]))

最新更新