[R] how to extract data by specific months from a monthly ts object

Gabor Grothendieck ggrothendieck at gmail.com
Mon Jan 21 02:27:13 CET 2008


Try %in%

ta[ cycle(ta) %in% c(1, 2, 8) ]

cycle(ta) == c(1, 2)

works only in this case since c(1, 2) is recycled to

 cycle(ta) == rep(c(1, 2), length = length(ta))

It would not have worked had your data had started
on an even numbered month.

This also works:

cyc <- cycle(ta)
ta[ cyc == 1 | cyc == 2 | cyc == 8 ]


On Jan 20, 2008 8:09 PM, tom soyer <tom.soyer at gmail.com> wrote:
> Hi,
>
> I am trying to extract data from a ts object by month, e.g., extract Jan,
> Feb, and Aug data from a monthly ts object. I tried the following but it
> didn't work:
>
> > xa=1:50
> > ta=ts(xa,start=c(1990,1),frequency=12)
> > ta[cycle(ta)==c(1,2)] # this method works but it's not what I want
>  [1]  1  2 13 14 25 26 37 38 49 50
> > ta[cycle(ta)==c(1,2,8)] # this method doesn't work, unfortunately
>  [1]  1  2 13 14 25 26 37 38 49 50
> Warning message:
> In `==.default`(cycle(ta), c(1, 2, 8)) :
>  longer object length is not a multiple of shorter object length
>
> somehow ta[cycle(ta)==c(1,2)] works. But what I really need is for
> ta[cycle(ta)==c(1,2,8)] to work, and it doesn't. Does anyone know how could
> to do this kinds of data extraction?
>
> Thanks!
>
> --
> 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.
>



More information about the R-help mailing list