[R-SIG-Finance] AsOf join in R

Robert A'gata rhelpacc at gmail.com
Thu Oct 6 03:11:05 CEST 2011


Hi Brian,

Thanks for getting back. I'm afraid it's not doing what I intend. If
you see value of B after asof join on 2011-09-09, cbind and na.locf
will give you 1.5 as opposed to 1.1. I would like to have latest value
available prior to 2011-09-09 from B which will be 1.1 on 2011-09-09.
It's a strict inquality for this operation. Would you have any other
recommendation? Thank you again.

Robert.

On Wed, Oct 5, 2011 at 6:21 AM, Brian G. Peterson <brian at braverock.com> wrote:
> 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
>
>



More information about the R-SIG-Finance mailing list