Please help to solve that problem: filter and merge 2 big Df's by=t_chr in sec. require(zoo) t1="2012-03-25 17:00:00.0" t2="2012-03-25 17:00:05.0" t1_POSIXlt<-strptime(t1, "%Y-%m-%d %H:%M:%OS")# t2_POSIXlt<-strptime(t2, "%Y-%m-%d %H:%M:%OS")# # ts_t1t2_POSIXlt<-seq(t1_POSIXlt,t2_POSIXlt,length.out =-1+2*length(seq(t1_POSIXlt,t2_POSIXlt, "sec") ) ) ts_t1t2_POSIXlt<-seq(t1_POSIXlt,t2_POSIXlt,length.out =length(seq(t1_POSIXlt,t2_POSIXlt, "sec") ) ) t_ts_t1t2_chr<-as.character(format(ts_t1t2_POSIXlt,"%Y-%m-%d %H:%M:%OS")) tail(t_ts_t1t2_chr) t_chr<-rep(t_ts_t1t2_chr,c((1:(-1+length(t_ts_t1t2_chr))),1)) str(t_chr) # system.time() Df.a<-as.data.frame(cbind(t_chr,a=c(1:length(t_chr)),b=2*c(1:length(t_chr)),c=0.1*c(length(t_chr):1))); Df.a #---------------------------------------- #We wants to obtain" for each single second (time as a key) a) mean filtered t_chr a b c 2012-03-25 17:00:00 1 2 1.6 2012-03-25 17:00:01 2.5 5 1.45 2012-03-25 17:00:02 5 10 1.2 2012-03-25 17:00:03 8.5 17 0.85 2012-03-25 17:00:04 13 26 0 0.4 2012-03-25 17:00:05 16 32 0.1
Df.a.filtered.mean=??? #------------------------------------------ #We wants to obtain" for each single second (time as a key) b) max filtered #key = time, each second: 1 max from these same seconds t_chr a b c 1 2012-03-25 17:00:00 1 2 1.6 3 2012-03-25 17:00:01 3 6 1.5 6 2012-03-25 17:00:02 6 12 1.3 10 2012-03-25 17:00:03 10 20 1.0 10 2012-03-25 17:00:04 15 30 1.0 16 2012-03-25 17:00:05 16 32 0.1 Df.a.filtered.max =??? #------------------------------------------ the problem is, taht we have huge matrix. The solution should be fast. next we want to merge it with another Data frame #------------------------------------------ t1="2012-03-25 17:00:00.0" t2="2012-03-25 17:00:05.0" t1_POSIXlt<-strptime(t1, "%Y-%m-%d %H:%M:%OS")# t2_POSIXlt<-strptime(t2, "%Y-%m-%d %H:%M:%OS")# ts_t1t2_POSIXlt<-seq(t1_POSIXlt,t2_POSIXlt,length.out =-1+2*length(seq(t1_POSIXlt,t2_POSIXlt, "sec") ) ) # ts_t1t2_POSIXlt<-seq(t1_POSIXlt,t2_POSIXlt,length.out =length(seq(t1_POSIXlt,t2_POSIXlt, "sec") ) ) t_chr2<-t_ts_t1t2_chr<-as.character(format(ts_t1t2_POSIXlt,"%Y-%m-%d %H:%M:%OS")) tail(t_ts_t1t2_chr) Df.b<-as.data.frame(cbind(t_chr2,dfb.b1=c(1:length(t_chr2)),dfb.b=2*c(1:length(t_chr2)),dfb.c=0.1*c(length(t_chr2):1))); Df.b #------------------------------------------ merge(Df.a,Df.b, by.x=t_chr,by.y=t_chr2,all.x=TRUE,all.y=TRUE) And if in Df.a there is no all seconds measurements? And if in Df.a. there are many NA? How we can handle it in R? Thanks KaluzaEA. [[alternative HTML version deleted]] ______________________________________________ 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.