An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20100130/fe8e7e61/attachment.pl>
question about time series objects
4 messages · Deepankar Basu, David Winsemius, Gabor Grothendieck
On Jan 30, 2010, at 9:22 AM, Dipankar Basu wrote:
Hi All, I have a very simple question about a time series object: how to access values for a particular year and quarter (say)? Suppose, following http://www.stat.pitt.edu/stoffer/tsa2/R_time_series_quick_fix.htm I have read in data as a time series; here is how it looks. * Qtr1 Qtr2 Qtr3 Qtr4 1960 0.71 0.63 0.85 0.44 1961 0.61 0.69 0.92 0.55 . . . . . . . . . . 1979 14.04 12.96 14.85 9.99 1980 16.20 14.67 16.02 11.61* How do I access the value for 1961 quarter 3 (say)?
Time series (at least as I understand them) are vectors or matrices with a folded and labeled print method but they are not referenced by the marginal indices that are offered in the print method. Assuming you followed that set of examples and have a time series named, jj, the specific element could be accessed as: > yr=1961 > qtr=3 > jj[ 4*(yr-1960)+qtr ] [1] 0.92 Or if you wanted to extract the start year programmatically: > jj[4*(yr-attr(jj, "tsp")[1])+qtr] [1] 0.92 > jj[4*(yr-start(jj))+qtr] [1] 0.92 NA That NA comes from the return values of 1960 and 1 using start. The help page for start has no section that describes the values, but it appears that you get both the year and qtr. > jj[4*(yr-start(jj)[1])+qtr] [1] 0.92 # what I expected
David Winsemius, MD Heritage Laboratories West Hartford, CT
See ?window.ts, e.g.
# 1 tt <- ts(c(0.71, 0.63, 0.85, 0.44, 0.61, 0.69, 0.92, 0.55),
+ start = 1960, frequency = 4)
at <- c(1961, 3) window(tt, at, at)[1]
[1] 0.92 Note that 1961.00, 1961.25, 1961.50 and 1961.75 represent the 4 quarters of 1961 so this also works: # 2
window(tt, 1961.5, 1961.5)[1]
[1] 0.92 (Without the [1], the above commands return a time series of length 1 rather than just a number.) A third approach is to convert to zoo. as.zoo.ts converts a ts series to a zoo series whose index can be accessed via year + fraction notation and window.zoo supports an index argument (so we can avoid having to specify the index twice):
# 3 library(zoo) coredata(window(as.zoo(tt), index = 1961.5))
[1] 0.92 (Without coredata it returns a length 1 zoo series rather than just a number.)
On Sat, Jan 30, 2010 at 9:22 AM, Dipankar Basu <basu.15 at gmail.com> wrote:
Hi All, I have a very simple question about a time series object: how to access values for a particular year and quarter (say)? Suppose, following http://www.stat.pitt.edu/stoffer/tsa2/R_time_series_quick_fix.htm I have read in data as a time series; here is how it looks. * ? ? ? Qtr1 ?Qtr2 ?Qtr3 ?Qtr4 ?1960 ?0.71 ?0.63 ?0.85 ?0.44 ?1961 ?0.61 ?0.69 ?0.92 ?0.55 ? ?. ? ? . ? ? . ? ? . ? ? . ? ?. ? ? . ? ? . ? ? . ? ? . ?1979 14.04 12.96 14.85 ?9.99 ?1980 16.20 14.67 16.02 11.61* How do I access the value for 1961 quarter 3 (say)? Dipankar ? ? ? ?[[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.
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20100130/1c6c5951/attachment.pl>