Search code examples
rtime-seriesshiftquantmod

Time series shift into future with R


I'm trying to shift a time series (zoo object) 7 days (trading week) ahead into future.

library(quantmod)
getSymbols(c("AAPL"), from="2013-01-01", return.class="zoo")
aapl <- Ad(AAPL)
tail(aapl)
2013-05-07 2013-05-08 2013-05-09 2013-05-10 2013-05-13 2013-05-14 
    455.64     460.79     456.77     452.97     454.74     443.86 

I want this:
2013-05-14 2013-05-15 2013-05-16 2013-05-17 2013-05-20 2013-05-21 
    455.64     460.79     456.77     452.97     454.74     443.86 

Is this somehow possible? I've tried a lot and failed...


Solution

  • Convert it to class zooreg (so that it knows that its regularly spaced or almost so) and then lag it appropriately:

    > lag(as.zooreg(tail(aapl)), -7)
    2013-05-14 2013-05-15 2013-05-16 2013-05-17 2013-05-20 2013-05-21 
        455.64     460.79     456.77     452.97     454.74     443.86 
    

    For more info, look at the examples section of ?zooreg and read the comments starting where it reads:

    # lag and diff (as diff is defined in terms of lag)