From: tom soyer <tom.soyer_at_gmail.com>

Date: Thu, 10 Jan 2008 09:40:59 -0600

Date: Thu, 10 Jan 2008 09:40:59 -0600

Thanks Achim. Data manipulation in zoo and coerce back to ts. Sounds good!

On 1/10/08, Achim Zeileis <Achim.Zeileis_at_wu-wien.ac.at> wrote:

*>
*

> On Thu, 10 Jan 2008, tom soyer wrote:

*>
**> > Hi,
**> >
**> > I have two questions about ts.
**> >
**> > (1) How do I subset a ts object and still preserve the time index? for
**> > example:
**> >
**> > > x=ts(1:10, frequency = 4, start = c(1959, 2)) # the ts object
**> > > x
**> > Qtr1 Qtr2 Qtr3 Qtr4
**> > 1959 1 2 3
**> > 1960 4 5 6 7
**> > 1961 8 9 10
**> > I don't want the 1st 2 elements, so I could subset like this:
**> > > x[3:length(x)]
**> > [1] 3 4 5 6 7 8 9 10
**> >
**> > But then the time index is lost. I could use window(), but then I have
**> to
**> > specify start and end manually. Is there a way to subset a ts object so
**> that
**> > the time index is preserved for the data extracted without specifying
**> start
**> > and end data by hand?
**>
**> I think window() is the way to go with "ts".
**> "zoo"/"zooreg" additionally provide what you ask for:
**>
**> library("zoo")
**> x <- ts(1:10, frequency = 4, start = c(1959, 2))
**> z <- as.zoo(x)
**> z[3:length(z)]
**>
**> The time formatting is somewhat nice when you declare explicitely that
**> this is "yearqtr" data:
**>
**> time(z) <- as.yearqtr(time(z))
**> z[3:length(z)]
**>
**> > (2) How do I join two ts objects together end to end? for example:
**> > > x=ts(1:10, frequency = 4, start = c(1959, 2)) # the 1st ts object
**> > > y=ts(11:15, frequency = 4, start = c(1961, 4)) # the 2nd ts object
**> >
**> > As you can see, y is just a continuation of x. I would like to add y to
**> the
**> > end of x while preserving the time index. I could use this:
**> > > ts(c(x,y),start=start(x),frequency=4)
**> >
**> > But I am wondering if there is a more efficient way of doing this, i.e.,
**> is
**> > it really necessary to specify start and frequency again when they are
**> > already a part of the original ts objects?
**>
**> "zoo" also provides this:
**>
**> x <- ts(1:10, frequency = 4, start = c(1959, 2))
**> y <- ts(11:15, frequency = 4, start = c(1961, 4))
**> c(as.zoo(x), as.zoo(y))
**>
**> or you can also coerce back to "ts"
**>
**> as.ts(c(as.zoo(x), as.zoo(y)))
**>
**> Personally, I tend to do my data manipulations in "zoo" (not very
**> surprisingly ;-)) but might coerce the resulting series to "ts" if I want
**> to use certain modeling functions.
**> Z
**>
**>
**>
**>
*

-- Tom [[alternative HTML version deleted]] ______________________________________________ R-help_at_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.Received on Thu 10 Jan 2008 - 15:45:23 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Thu 10 Jan 2008 - 16:30:06 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*