假设我有一个向量
{{1}}
我想计算第1个,第21个,第41个,第61个和第81个值的平均值。然后是第2、22、42、62和82值,依此类推。直到我有20个值的最终向量。
是否可以使用基数R做到这一点?
谢谢。
答案 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
另一个选项是tapply
和rep_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]))