R中的'mean'和'average'之间是否存在细微差别?

时间:2015-04-16 03:37:58

标签: r

这两行代码之间有什么区别:

mv_avg[i-2] <- (sum(file1$rtn[i-2]:file1$rtn[i+2])/5) 

mv_avg[i-2] <- mean(file1$rtn[i-2]:file1$rtn[i+2])

我试图计算数据集中前5个元素的移动平均值。我正在运行一个for循环,这两行给出了不同的输出。很抱歉没有提供数据和其他代码供您执行和查看(不能这样做,有些问题)。

我只想知道他们是否做同样的事情,或者他们两者之间是否存在细微差别。

1 个答案:

答案 0 :(得分:4)

meansum不是问题。下面的示例说明了您的代码发生了什么:

x = seq(0.5,5,0.5)
i = 8

# Your code
x[i-2]:x[i+2]
[1] 3 4 5

# Index this way to get the five values for the moving average
x[(i-2):(i+2)]
[1] 3.0 3.5 4.0 4.5 5.0

x[i-2] = 3且x[i+2] = 5,因此x[i-2]:x[i+2]相当于3:5。您meansum会看到不同的结果,因为您的代码未返回5个值。因此将总和除以5并不能给出平均值。在我的示例中,sum(c(3,4,5))/5 != mean(c(3,4,5))

@ G.Grothendieck提到rollmean。这是一个例子:

library(zoo)

rollmean(x, k=5, align="center")

[1] 2.1 3.1 4.1 5.1 6.1 7.1 8.1