# [R] Creating a Series of Maxima

arun smartpink111 at yahoo.com
Thu Jun 19 18:46:55 CEST 2014

```To get the maximum:

lapply(split(df, df\$Year), function(x) max(sapply(1:(nrow(x)-2), function(i) with(x, mean(Amount[i:(i+2)],na.rm=TRUE)))))
#\$`1985`
#[1] 4.166667

A.K.

On , arun <smartpink111 at yahoo.com> wrote:
Hi,
You may try:
df <- structure(list(....)

lapply(split(df, df\$Year), function(x) sapply(1:(nrow(x)-2), function(i) with(x, mean(Amount[i:(i+2)],na.rm=TRUE))))
#\$`1985`
# [1] 4.1666667 3.8333333 0.8333333 0.3333333 0.3333333 0.0000000 0.0000000
# [8] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
#[15] 0.0000000 0.6666667 1.0000000 1.0000000

A.K.

On Wednesday, June 18, 2014 10:53 PM, Hafizuddin Arshad <hafizuddinarshad21 at gmail.com> wrote:
Dear R users,

I have this kind of data set:

structure(list(Year = c(1985L, 1985L, 1985L, 1985L, 1985L, 1985L,
1985L, 1985L, 1985L, 1985L, 1985L, 1985L, 1985L, 1985L, 1985L,
1985L, 1985L, 1985L, 1985L, 1985L), Day = 1:20, Month = c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L), Amount = c(1, 10, 1.5, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 2, 1, 0)), .Names = c("Year", "Day", "Month",
"Amount"), row.names = c(NA, 20L), class = "data.frame")

I would like to do a block average for every three days i.e.
Average(1Jan-3Jan, 2Jan-4Jan, 3Jan-5Jan,...29Dec-31Dec, 30Dec-1jan). I want
to do this for each year and take the maximum value of the 3 day averages
in each year to create a series of maxima. How to do this in R?

Many thanks for helping me.