[prev in list] [next in list] [prev in thread] [next in thread] 

List:       r-help
Subject:    Re: [R] date calculation
From:       "Shi, Tao" <shidaxia () yahoo ! com>
Date:       2010-10-30 20:16:57
Message-ID: 182820.19744.qm () web30801 ! mail ! mud ! yahoo ! com
[Download RAW message or body]

I think this demonstrate on of the differences between Class 'Date' and 'POSIXlt'.  \
Thanks, Marc!

...Tao




From: Marc Schwartz <marc_schwartz@me.com>
To: Ben Bolker <bbolker@gmail.com>
Cc: "Shi, Tao" <shidaxia@yahoo.com>; "r-help@stat.math.ethz.ch" \
                <r-help@stat.math.ethz.ch>
Sent: Saturday, October 30, 2010 7:48:05 AM
Subject: Re: [R] date calculation


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@gmail.com>
> > > To:r-help@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


      
	[[alternative HTML version deleted]]

______________________________________________
R-help@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.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic