On 2020-08-03 21:11 +1000, Jim Lemon wrote:
> On Mon, Aug 3, 2020 at 8:52 PM Md. Moyazzem Hossain <hossai...@juniv.edu> 
> wrote:
> >
> > Hi,
> >
> > I have a dataset having monthly 
> > observations (from January to 
> > December) over a period of time like 
> > (2000 to 2018). Now, I am trying to 
> > take an average the value from 
> > January to July of each year.
> >
> > The data looks like
> > Year    Month  Value
> > 2000    1         25
> > 2000    2         28
> > 2000    3         22
> > ....    ......      .....
> > 2000    12       26
> > 2001     1       27
> > .......         ........
> > 2018    11       30
> > 20118   12      29
> >
> > Can someone help me in this regard? 
> >
> > Many thanks in advance.
> 
> Hi Md,
> One way is to form a subset of your 
> data, then calculate the means by 
> year:
> 
> # assume your data is named mddat
> mddat2<-mddat[mddat$month < 7,]
> jan2jun<-by(mddat2$value,mddat2$year,mean)
> 
> Jim

Hi Md,

you can also define the period in a new 
column, and use aggregate like this:

        Md <- structure(list(
        Year = c(2000L, 2000L, 2000L, 
        2000L, 2001L, 2018L, 2018L), 
        Month = c(1L, 2L, 3L, 12L, 1L,
        11L, 12L), 
        Value = c(25L, 28L, 22L, 26L,
        27L, 30L, 29L)), 
        class = "data.frame", 
        row.names = c(NA, -7L))
        
        Md[Md$Month %in%
                1:6,"Period"] <- "first six months of the year"
        Md[Md$Month %in% 7:12,"Period"] <- "last six months of the year"
        
        aggregate(
          formula=Value~Year+Period,
          data=Md,
          FUN=mean)

Rasmus

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to