我有一个值向量:
[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 个点的平均值,而不仅仅是数字本身。
最佳答案
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)
关于r - 获取 R 中向量每 10 步的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32746842/