On Tue, 2011-10-04 at 23:41 -0400, Robert A'gata wrote: > AsOf(A,B) should return > > A B > 2011-09-01 10 1.1 > 2011-09-09 15 1.1 # (because latest value B prior to > 2011-09-09 is 1.1) > 2011-09-10 20 1.5 > 2011-09-15 25 1.7 > > How do I write the above AsOf function in R? The merge function does > not do what I want because it will align points that have the same > time stamp together while what I want is actually latest value prior > to timestamp in A. Any example would be greatly appreciated. Thank > you.
A <- xts(c(10,15,20,25), order.by=as.POSIXct(c("2011-09-01","2011-09-09","2011-09-10","2011-09-15"))) B <- xts(c(1.1,1.5,1.3,1.7), order.by=as.POSIXct(c("2011-08-31","2011-09-09","2011-09-11","2011-09-12"))) AsOf<-function(a,b) { x<-cbind(a,b) x[,2]<-na.locf(x[,2]) x[!is.na(x[,1])] } AsOf(A,B) ##################### # ..1 ..2 #2011-09-01 10 1.1 #2011-09-09 15 1.5 #2011-09-10 20 1.5 #2011-09-15 25 1.7 ##################### -- Brian G. Peterson http://braverock.com/brian/ Ph: 773-459-4973 IM: bgpbraverock ______________________________________________ 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.