数组中的平均值

时间:2012-12-05 00:12:42

标签: r sequence moving-average

我有一个数组,想要构建一个循环,它从数组的第一个值开始平均每秒的值,在第一个循环之后,循环应该从数组的第二个值开始。

例如:

3,6,18,10,2

结果应为:

7.666,8,10

   for 7.6666= (3+18+2)/3 
   for 8= (6+10)/2
   for 10=(18+2)/2 

提前致谢

2 个答案:

答案 0 :(得分:6)

你在找这样的东西吗?

x <- c(3,6,18,10,2)

n <- length(x)
sapply(seq_len(n-2), function(X) {
    mean(x[seq(X, n, by=2)])
})
# [1]  7.666667  8.000000 10.000000

然后更有趣的事情,赚取 @ mnel的upvote;)

n <- length(x)
m <- matrix(0, n, n-2)
ii <- row(m) - col(m)
m[ii >= 0 & !ii %% 2] <- 1
colSums(x * m)/colSums(m)
# [1]  7.666667  8.000000 10.000000

答案 1 :(得分:5)

另一个恋人:

rev(filter(rev(x), 0:1, "r") / filter(rep(1, length(x)), 0:1, "r"))
# [1]  7.666667  8.000000 10.000000 10.000000  2.000000