# [R] How to calculate moving average without using filter()?

Bert Gunter gunter.berton at gene.com
Mon Feb 17 20:05:22 CET 2014

```There are a zillion answers to this, because your question is really:
How do I smooth a time series? So you can search on appropriate
keywords.

My answer is: don't use moving averages -- that's pathetically
ancient. ?loess is one among the zillions of alternatives you might
consider. Post on CV (stats.stackexchange.com) for other statistical
alternatives for time series smoothing.

Also, the "understanding" you expressed above is flawed. apply-type
constructs **are** (R-level) loops. So have you done your homework by
(http://cran.r-project.org/doc/manuals/R-intro.pdf) or other web
tutorials? If not, please do so before posting here further.

Cheers,
Bert

-- Bert

Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
H. Gilbert Welch

On Mon, Feb 17, 2014 at 10:45 AM, C W <tmrsg11 at gmail.com> wrote:
> Hi list,
> How do I calculate a moving average without using filter().  filter() does
> not seem to give weighted averages.
>
> I am looking into apply(), tapply,... But nothing "moves".
>
> For example,
>
> dat<-c(1:20)
> mean(dat[1:3])
> mean(dat[4:6])
> mean(dat[7:9])
> mean(dat[10:12])
>
> etc...
>
> I understand the point of apply is to avoid loops, how should I incorporate
> this idea into using an apply()?
>
> Thanks,
> Mike
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help