AsOf join in R
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