Hi Md, I think the errors are that you forgot to initialize "m", calculated the mean outside the loops and forgot the final brace:
m<-rep(0,44) for(i in 1975:2017) { for(j in 1:44) { mddat2[j]<-mddat[mddat$Year == i & mddat$Month >= 7 | mddat$Year == (i+1) & mddat$Month <= 6,] m[j]=mean(mddat2$Value) } } Jim On Wed, Aug 5, 2020 at 6:04 AM Md. Moyazzem Hossain <hossai...@juniv.edu> wrote: > > Dear Jim, > > Thank you very much. You are right. It is good now. However, I want to > continue it up to the year 2017. > > I use the following code but got the error > > for(i in 1975:2017){ > for(j in 1:44){ > mddat2[j]<-mddat[mddat$Year == i & mddat$Month >= 7 | > mddat$Year == (i+1) & mddat$Month <= 6,] > } > m[j]=mean(mddat2$Value) > > } > m > > Please help me in this regard. Many thanks in advance. > > Regards, > Md > > On Tue, Aug 4, 2020 at 8:41 AM Jim Lemon <drjimle...@gmail.com> wrote: >> >> Your problem is in the subset operation. You have asked for a value of >> month greater or equal to 7 and less than or equal to 6. You probably >> got an error message that told you that the data were of length zero >> or something similar. If you check the result of that statement: >> >> > mddat$month >= 7 & mddat$month <= 6 >> logical(0) >> >> In other words, the two logical statements when ANDed cannot produce a >> result. A number cannot be greater than or equal to 7 AND less than or >> equal to 6. What you want is: >> >> mddat2<-mddat[mddat$Year == 1975 & mddat$Month >= 7 | >> mddat$Year == 1976 & mddat$Month <= 6,] >> mean(mddat2$Value) >> [1] 88.91667 >> >> Apart from that, your email client is inserting EOL characters that >> cause an error when pasted into R. >> >> Error: unexpected input in "�" >> >> Probably due to MS Outlook, this has been happening quite a bit lately. >> >> Jim >> >> On Mon, Aug 3, 2020 at 11:30 PM Md. Moyazzem Hossain >> <hossai...@juniv.edu> wrote: >> > >> > Dear Jim, >> > >> > Thank you very much. It is working now. >> > >> > However, I am also trying to find the average of the value from July 1975 >> > to June 1976 and recorded as the value for the year 1975 but got an error >> > message. I am attaching the data file here. Please check the attachment. >> > >> > mddat=read.csv("F:/mddat.csv", header=TRUE) >> > mddat2<-mddat[mddat$Month >=7 & mddat$Month <= 6,] >> > jan2jun<-by(mddat2$Value,mddat2$Year,mean) >> > jan2jun >> > >> > Please help me again and many thanks in advance. >> > >> > Md >> > >> > >> > On Mon, Aug 3, 2020 at 12:33 PM Rasmus Liland <j...@posteo.no> wrote: >> >> >> >> 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.