[R] How to plot multiple time series with different time base in same plot?

Gabor Grothendieck ggrothendieck at gmail.com
Sat Jan 5 01:54:22 CET 2013


On Fri, Jan 4, 2013 at 5:53 PM, Matthijs Daelman
<matthijs.daelman at gmail.com> wrote:
> Hi
>
> I have to time series with a different time base.
>
> The first has only sporadic datapoints:
> 2011-02-01 15.29130
> 2011-02-08 17.60278
> 2011-02-15 17.99737
> 2011-02-22 25.43690
>
> The other has a daily datapoint:
> 2011-02-01 342.34
> 2011-02-02 68.45
> 2011-02-03 130.47
> 2011-02-04 129.86
> 2011-02-05 81.98
> 2011-02-06 77.30
> 2011-02-07 81.38
> 2011-02-08 139.95
> 2011-02-09 124.40
> ...etc.
>
> In Excel, it is fairly easy to get these two time series in one and the
> same scatter plot, with two Y-axes, but how would you do this with R?
>
> Also, I would like to obtain a data frame that contains both variables:
> 2011-02-01 342.34       15.29130
> 2011-02-02 68.45         NA
> 2011-02-03 130.47       NA
> 2011-02-04 129.86       NA
> 2011-02-05 81.98         NA
> 2011-02-06 77.30         NA
> 2011-02-07 81.38         NA
> 2011-02-08 139.95       17.60278
> 2011-02-09 124.40        NA
> etc.
>
> I can imagine that the data frame can be obtained using (nested) loops, but
> that does not seem very efficient with a large dataset.
>

Try this:


data1 <- "2011-02-01 15.29130
 2011-02-08 17.60278
 2011-02-15 17.99737
 2011-02-22 25.43690"

data2 <- "2011-02-01 342.34
 2011-02-02 68.45
 2011-02-03 130.47
 2011-02-04 129.86
 2011-02-05 81.98
 2011-02-06 77.30
 2011-02-07 81.38
 2011-02-08 139.95
 2011-02-09 124.40"

library(zoo)
# read into zoo objects
z1 <- read.zoo(text = data1)
z2 <- read.zoo(text = data2)

# set up
plot(na.aggregate(merge(z1, zoo(, time(z2)))), type = "n", ylab = "")

# plot first series
lines(z1)

# plot 2nd series in red with red Y axis
par(new = TRUE)
plot(z2, col = "red", xaxt = "n", yaxt = "n", ylab = "")
axis(4, col = "red")

See ?plot.zoo for more examples.



--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com




More information about the R-help mailing list