[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