[R] Creating a Series of Maxima

arun smartpink111 at yahoo.com
Thu Jun 19 18:44:48 CEST 2014


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.

Arshad

    [[alternative HTML version deleted]]

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list