如何从向量计算特定值的均值?

时间:2019-07-17 10:36:02

标签: r vector sequence mean

假设我有一个向量

{{1}}

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

是否可以使用基数R做到这一点?

谢谢。

2 个答案:

答案 0 :(得分:3)

将尺寸更改为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

答案 1 :(得分:0)

您可以使用sapply浏览1:20并将其添加到0:4*20中,例如:

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