[R] Converting a 'difftime' to integer - How to???

Peter Dalgaard p.dalgaard at biostat.ku.dk
Wed May 21 22:31:22 CEST 2008


Martin Hvidberg wrote:
> I want to find the DOY (Day of Year) of some dates. I think to substract the date 1. January from the data to achive this. Something like:
>
>   
>>  d <- as.Date("2006-03-13") - as.Date("2006-01-01") +1
>> d
>>     
> Time difference of 72 days
>
> So far so good. But d is a 'difftime' object. How do I get an Integer value from that?
>
> I tried severel things, incuding the following:
>
>   
>> dd <- as(d,"numeric")
>>     
> Error in .classEnv(thisClass) : 
>   unable to find an environment containing class "difftime"
>
> Sugestions appriciated...
>
>   
The canonical way is

 > as.numeric(d, units="days")
[1] 72

In fact, you can leave out the units when dealing with differences 
between Date objects, because it is always "days", but that is an 
undocumented implementation detail.

If you have differences between POSIXt objects, real confusion can arise:

 > ISOdatetime(2008,1,1,12,0,2) - ISOdatetime(2008,1,1,12,0,0)
Time difference of 2 secs
 > ISOdatetime(2008,1,1,12,2,0) - ISOdatetime(2008,1,1,12,0,0)
Time difference of 2 mins
 > ISOdatetime(2008,1,1,14,0,0) - ISOdatetime(2008,1,1,12,0,0)
Time difference of 2 hours

-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907



More information about the R-help mailing list