[R] date calculation
Marc Schwartz
marc_schwartz at me.com
Sat Oct 30 16:48:05 CEST 2010
On Oct 30, 2010, at 9:22 AM, Ben Bolker wrote:
> On 10-10-30 02:02 AM, Shi, Tao wrote:
>> Hi Ben,
>>
>> That must be the case! In fact if I do:
>>
>>> difftime(strptime("24NOV2004", format="%d%b%Y"), strptime("13MAY2004",format="%d%b%Y"), units="days", tz="GMT")
>> Time difference of 195 days
>>
>>
>> which supports your claim.
>>
>> Can someone from the R development team confirm this?
>>
>> Thanks!
>>
>> ...Tao
>>
>>
>
> It sounds like you think this is a bug. It's not (although it's
> arguably not what you want). The general advice when using dates and
> time in R is to use the *least* specific date format that will do what
> you want, i.e. don't use a format that incorporates time zone
> information (daylight savings time) information if you don't want to
> deal with these complexities.
>
> I would suggest the chron package:
>
> library(chron)
> diff(chron(dates.=c("24/11/2004","13/05/2004"),format="d/m/y"))
Ben,
If time and time zone are not relevant, any reason not to use:
> diff(as.Date(c("13/05/2004", "24/11/2004"), format = "%d/%m/%Y"))
Time difference of 195 days
or perhaps conceptually easier:
Date2 <- as.Date("24/11/2004", format = "%d/%m/%Y")
Date1 <- as.Date("13/05/2004", format = "%d/%m/%Y")
> Date2 - Date1
Time difference of 195 days
R has built in arithmetic operations for such dates, without the need to use another package, since they are effectively numerics with a Date class:
> str(Date1)
Class 'Date' num 12551
> str(Date2)
Class 'Date' num 12746
?
HTH,
Marc Schwartz
>>
>>
>>
>> ----- Original Message -----
>>> From:Ben Bolker <bbolker at gmail.com>
>>> To:r-help at stat.math.ethz.ch
>>> Cc:
>>> Sent:Friday, October 29, 2010 7:54:53 PM
>>> Subject:Re: [R] date calculation
>>>
>>>
>>> Shi, Tao <shidaxia <at>
>>> href="http://yahoo.com">yahoo.com> writes:
>>
>>> Could someone
>>> explain to me why the following result is not a integer?
>>>
>>>>
>>> difftime(strptime("24NOV2004", format="%d%b%Y"), strptime("13MAY2004",
>>>
>>>> format="%d%b%Y"), units="days")
>>> Time difference of 195.0417
>>> days
>>
>> Presumably because this goes across a daylight-savings
>>> time
>> adjustment? 0.0417=1/24 days is 1 hour ...
>>
>> Ben
>>> Bolker
More information about the R-help
mailing list