在R中的向量中获得平均每10步

时间:2015-09-23 18:25:22

标签: r

我有一个值向量:

[1]   0  0  4  1  0  0 -1  1  1  0 -1  0  0 -2  0  0
[17]  1  2  0  2  0  1  1  1  0  1 -1  0  0  0  0  0
[33]  0  2  0  4 -2  0  0 -1  1  0  0  0 -1 -2  2  0
[49] -1  0 -1  0  3  0  0 -1  1  0  0  0  1 -3  0 -1
[65]  0 -1  0  1  1  0  1 -2  1  1  0  0 -1 -2  0  0
[81]  0  2  0  0  1  1  0  0  0 -1 -2  0 -1 -1 -1 -1
[97]  1  1  0  1

我想获得每10步的平均值(此时前10个数的平均值),从而产生具有这些平均值的新向量。由于原始向量中有100个值,因此将给出长度为10的新向量(10个平均值)。

我知道我可以使用以下方式访问每个第10点的号码:

result <- my_vector[seq(1, length(my_vector), 10)]

但我需要在该步骤中前10个点的平均值,而不仅仅是数字本身。

1 个答案:

答案 0 :(得分:2)

colMeans(matrix(x, 10))
[1]  0.4  0.7  0.8  0.2  0.0  0.4 -0.4 -0.4 -0.7  0.1

我们将矢量转换为尺寸与所需长度匹配的矩阵,并使用colMeans查找每个组的平均值。我们也可以使用rowMeans,但由于默认情况下矩阵是按列填充的,我们必须添加另一个参数byrow=TRUE并且可能会因为所有额外的输入而伤害自己。

我们可以通过明确找出一些子集化向量的平均值来测试我们的答案。

#Test
mean(x[1:10])
[1] 0.4
mean(x[11:20])
[1] 0.7

数据

x <- c(0, 1, 0, -1, 0, 0, 0, 2, 2, 0, -1, 2, 4, 0, 0, -1, 0, 0, 1, 
2, 4, 0, 1, 0, 0, 0, -2, 3, 1, 1, 0, 1, 0, 0, 0, 1, -1, 1, 0, 
0, 1, 0, 1, 1, -1, -1, -2, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 
-1, -1, -1, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, -1, 
-2, 0, -2, -3, -2, -1, 0, 0, 2, 0, 0, -1, 0, 0, 0, -1, 0, -1, 
1, 1, 0, 1)