r - 获取 R 中向量每 10 步的平均值

标签 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 个点的平均值,而不仅仅是数字本身。

最佳答案

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/

相关文章:

r - data.table 如何对键列上的 NA 值进行排序?

条件分布的 R 图。 cdplot() 似乎没有这样做

r - 如何使 R data.table 在像 data.frame 这样的列分配中回收时抛出错误?

r - 优化 R Boggle 求解器

r - 将序列与缺失值对齐

r - 错误消息

r - 将列表中的每个元素填充到 R 中的特定长度

r - 使 R 代码更简洁,以创建重叠日期的指示器

r - 了解attr(x, "class")和class(x)之间的区别

r - 如何通过多个for循环使Rcpp代码高效?