[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