[R] date operations

Gabor Grothendieck ggrothendieck at gmail.com
Wed Dec 3 20:13:38 CET 2008


On Wed, Dec 3, 2008 at 1:57 PM, Gavin Simpson <gavin.simpson at ucl.ac.uk> wrote:
> On Wed, 2008-12-03 at 13:18 -0500, Gabor Grothendieck wrote:
>> What is odd is that it seems to run ok if we call "+.Date" directly:
>>
>> > "+.Date"(alpha1, alpha2)
>> [1] "2009-02-15"
>
> It also works if you flip the ordering:
>
>> alpha2 + alpha1
> [1] "2009-02-15"
> Warning message:
> Incompatible methods ("+.Date", "Ops.difftime") for "+"
>
> It is just a warning, but one should check that the answer is correct
> given the perceived problem with different classes of objects.
>
> Why it works is not odd if you look at the help for ?`+.Date`, which
> shows that for this method (correct term?) we need 'date' + 'x', where
> 'date' is an object of class Date and 'x' is numeric.

In fact what it says is that x may be numeric OR difftime.  Also the
above does not explain it in any case because:

> "+.Date"(alpha1, alpha2)
[1] "2009-02-15"

> alpha1+alpha2
Time difference of 14290 days
Warning message:
Incompatible methods ("Ops.difftime", "+.Date") for "+"

>
> The OP can avoid the warning by:
>
>> alpha2 + as.numeric(alpha1)
> [1] "2009-02-15"

His question was how to avoid using as.numeric.

>
> If you put alpha1 first (class difftime) that method gets used and
> alpha2 is coerced to numeric to complete the operation:
>
>> alpha1+alpha2
> Time difference of 14290 days
> Warning message:
> Incompatible methods ("Ops.difftime", "+.Date") for "+"
>> as.numeric(alpha2) + 56
> [1] 14290
>
> To answer the OP's question about conversion, no you don't need to
> convert Date objects to numerics to work with them. You just need to be
> aware of method dispatch for `+()` and check that adding objects of
> differing classes makes sense.
>
> Of course, this assumes that the OP wanted the answer as an object of
> class "Date"...?
>
> G
>
>>
>> On Tue, Dec 2, 2008 at 4:10 PM, Christophe Dutang <dutangc at gmail.com> wrote:
>> > Hi all,
>> >
>> > I'm dealing with dates in R (2.7.2), but some basic operations raise a
>> > warning.
>> >
>> > Incompatible methods ("+.Date", "Ops.difftime") for "+"
>> >
>> > I saw this topic in this mailing list, but I do not understand what to
>> > do...
>> >
>> > cf. https://stat.ethz.ch/pipermail/r-help/2008-June/165842.html
>> >
>> > Do I have to convert Dates to numeric?
>> >
>> > Thanks in advance
>> >
>> > Christophe
>> >
>> > PS : R script used
>> >
>> > alpha2=as.Date("2008-12-21")
>> > alpha1=as.Date("2008-12-21")-as.Date("2008-10-26")
>> > alpha1
>> > alpha2
>> > alpha1+alpha2
>> >
>> >
>> >        [[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.
>> >
>>
>> ______________________________________________
>> 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.
> --
> %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
>  Dr. Gavin Simpson             [t] +44 (0)20 7679 0522
>  ECRC, UCL Geography,          [f] +44 (0)20 7679 0565
>  Pearson Building,             [e] gavin.simpsonATNOSPAMucl.ac.uk
>  Gower Street, London          [w] http://www.ucl.ac.uk/~ucfagls/
>  UK. WC1E 6BT.                 [w] http://www.freshwaters.org.uk
> %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
>
>



More information about the R-help mailing list