[R] Problem with timeSequence {timeDate} - wrong end date

Joshua Wiley jwiley.psych at gmail.com
Thu Jan 6 14:27:40 CET 2011


Dear Benjamin,

timeSequence() ultimately is relying on seq.POSIXt().  If you look at
the last paragraph of the "Details" section in ?seq.POSIXt it seems to
basically indicate that using by = "month" just sequences through the
months and the day is only changed if it is invalid for a particular
month (the relevant lines are around 88--100 in the seq.POSIXt code).

It is fairly straightforward ensure the output is less than "to".
Here is one option:

test <- timeSequence(from = "2008-01-01", to = "2010-12-13", by = "1 month")
test <- test[as.Date(test) < as.Date("2010-12-13")]
test

Cheers,

Josh


On Thu, Jan 6, 2011 at 1:30 AM, Benjamin B. <benj.bad.ac at googlemail.com> wrote:
> Dear help-list,
>
> I have a problem with timeSequence {timeDate}.
>
> When I use it like
>
>> timeSequence(from = "2008-01-01", to = "2010-12-13", by = "1 month")
> GMT
>  [1] [2008-01-01] [2008-02-01] [2008-03-01] [2008-04-01] [2008-05-01]
> [2008-06-01] [2008-07-01] [2008-08-01] [2008-09-01] [2008-10-01]
> [2008-11-01]
> [12] [2008-12-01] [2009-01-01] [2009-02-01] [2009-03-01] [2009-04-01]
> [2009-05-01] [2009-06-01] [2009-07-01] [2009-08-01] [2009-09-01]
> [2009-10-01]
> [23] [2009-11-01] [2009-12-01] [2010-01-01] [2010-02-01] [2010-03-01]
> [2010-04-01] [2010-05-01] [2010-06-01] [2010-07-01] [2010-08-01]
> [2010-09-01]
> [34] [2010-10-01] [2010-11-01] [2010-12-01]
>
> The result is as expected: a list of dates with all dates smaller then the
> "to" date.
>
> But somehow it behaves strange when I use it with a different starting date:
>
>> test <- timeSequence(from = "2008-01-15", to = "2010-12-13", by = "1
> month")
> GMT
>  [1] [2008-01-15] [2008-02-15] [2008-03-15] [2008-04-15] [2008-05-15]
> [2008-06-15] [2008-07-15] [2008-08-15] [2008-09-15] [2008-10-15]
> [2008-11-15]
> [12] [2008-12-15] [2009-01-15] [2009-02-15] [2009-03-15] [2009-04-15]
> [2009-05-15] [2009-06-15] [2009-07-15] [2009-08-15] [2009-09-15]
> [2009-10-15]
> [23] [2009-11-15] [2009-12-15] [2010-01-15] [2010-02-15] [2010-03-15]
> [2010-04-15] [2010-05-15] [2010-06-15] [2010-07-15] [2010-08-15]
> [2010-09-15]
> [34] [2010-10-15] [2010-11-15] [2010-12-15]
>
> In this case the last calculated date is obviously LARGER than the "to"
> date:
>
>> as.Date(test[length(test)]) < "2010-12-13"
> [1] FALSE
>
> This seem to occur also with other parameters:
>
>> timeSequence(from = "1999-12-12", to = "2000-06-08", by = "2 months")
> GMT
> [1] [1999-12-12] [2000-02-12] [2000-04-12] [2000-06-12]
>
>> timeSequence(from = as.Date("1999-12-12"), to = as.Date("2000-06-08"), by
> = "2 months")
> GMT
> [1] [1999-12-12] [2000-02-12] [2000-04-12] [2000-06-12]
>
> Am I missing something essential in using timeSequence?
> Is this behavior wanted (then I don't get why it should...)?
> Is there a better way to get those dates?
>
> Thanks for reading and greetings,
>
> Benjamin
>
>
> Benjamin B.
> Hamburg, Germany
>
> ______________________________________________
> 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.
>



-- 
Joshua Wiley
Ph.D. Student, Health Psychology
University of California, Los Angeles
http://www.joshuawiley.com/



More information about the R-help mailing list