[R] diff, POSIXct, POSIXlt, POSIXt

Patrick Giraudoux patrick.giraudoux at univ-fcomte.fr
Sun Jul 23 09:17:10 CEST 2006


Dear Listers,

I have encountered a strange problem using diff() and POSIXt:

dts<-c("15/4/2003","15/7/2003","15/10/2003","15/04/2004","15/07/2004","15/10/2004","15/4/2005","15/07/2005","15/10/2005","15/4/2006")
dts <- strptime(dts, "%d/%m/%Y")
class(dts)

[1] "POSIXt"  "POSIXlt"

diff(dts)

Time differences of  7862400,  7948800, 15811200,  7862400,  7948800, 
15724800,  7862400,  7948800,        0 secs

In this case the result is not the one expected: expressed in seconds 
and not in days, and the difference between the two last dates is not 0.

Now, if one use a vector of 9 dates only (whatever the date removed), 
things come well:

diff(dts[-1])

Time differences of  92, 183,  91,  92, 182,  91,  92, 182 days

Also if one contrains dts to POSIXct

dts<-c("15/4/2003","15/7/2003","15/10/2003","15/04/2004","15/07/2004","15/10/2004","15/4/2005","15/07/2005","15/10/2005","15/4/2006")
dts <- as.POSIXct(strptime(dts, "%d/%m/%Y"))
diff(dts)

Time differences of  91,  92, 183,  91,  92, 182,  91,  92, 182 days

Any rational in that?

Patrick



More information about the R-help mailing list