Arrange data
On 2020-08-03 21:11 +1000, Jim Lemon wrote:
On Mon, Aug 3, 2020 at 8:52 PM Md. Moyazzem Hossain <hossainmm at 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