Hi, Try: set.seed(45) df1<- data.frame(datetime=as.POSIXct("2011-05-25",tz="GMT")+1:200,value=sample(1:40,200,replace=TRUE),value2= sample(45:90,200,replace=TRUE))
res<- with(df1,aggregate(cbind(value,value2),list(as.POSIXct(cut(datetime,breaks="5 sec"))+4),mean)) colnames(res)[1]<- colnames(df1)[1] head(res) # datetime value value2 #1 2011-05-25 00:00:05 16.0 67.4 #2 2011-05-25 00:00:10 10.8 60.0 #3 2011-05-25 00:00:15 20.2 65.2 #4 2011-05-25 00:00:20 17.8 65.2 #5 2011-05-25 00:00:25 21.2 81.6 #6 2011-05-25 00:00:30 21.4 56.2 #or library(plyr) res2<- ddply(df1,.(datetime=as.POSIXct(cut(df1$datetime,breaks="5 sec"))+4 ),numcolwise(mean)) head(res2) # datetime value value2 #1 2011-05-25 00:00:05 16.0 67.4 #2 2011-05-25 00:00:10 10.8 60.0 #3 2011-05-25 00:00:15 20.2 65.2 #4 2011-05-25 00:00:20 17.8 65.2 #5 2011-05-25 00:00:25 21.2 81.6 #6 2011-05-25 00:00:30 21.4 56.2 #or library(xts) originalTZ <- Sys.getenv("TZ") Sys.setenv(TZ = "GMT") xt1<- xts(df1[,2:3],order.by=df1[,1]) indx<-endpoints(xt1,'secs',5) res3<-period.apply(xt1,c(0,indx[-c(1,length(indx))]+1),FUN=mean) head(res3) # value value2 #2011-05-25 00:00:05 16.0 67.4 #2011-05-25 00:00:10 10.8 60.0 #2011-05-25 00:00:15 20.2 65.2 #2011-05-25 00:00:20 17.8 65.2 #2011-05-25 00:00:25 21.2 81.6 #2011-05-25 00:00:30 21.4 56.2 Sys.setenv(TZ = originalTZ) A.K. Hi, I am new to R and to this forum. I have to do a project for school and I have to calculate the mean of a set of values corresponding to certain times (in two columns). I will need to calculate the mean of the values every K seconds and I dont know how to divide my Time column or to link the values to their corresponding period. Could you give me a hand on this? Cheers! ______________________________________________ R-help@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.