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.