【问题标题】:Get the average every 10 steps in a vector in R [duplicate]在R中的向量中每10步获取平均值[重复]
【发布时间】:2015-09-24 02:39:50
【问题描述】:

我有一个值向量:

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

【问题讨论】:

  • rowMeans(matrix(x, ncol=10, byrow=TRUE))
  • 或者甚至只是colMeans(matrix(x, ncol = 10))
  • 美丽。谢谢大家,

标签: r


【解决方案1】:
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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    相关资源
    最近更新 更多