[R] Strange behaviour when using diff with POSIXt and POSIXlt objects
Brian Diggs
diggsb at ohsu.edu
Fri May 21 22:54:13 CEST 2010
On 5/21/2010 4:00 AM, Julian Burgos wrote:
> Hi Brian,
>
> This is really odd. I keep getting the NA secs answer, only by running
> these three lines of code in a new session.
>
>
>> time3=strptime("2009 06 01 00 47 00",format="%Y %m %d %H %M")
>> time4=strptime("2009 06 01 00 57 00",format="%Y %m %d %H %M")
>> diff(c(time3,time4))
> Time difference of NA secs
>
> Here is the information you requested:
>
>> dput(time3)
> structure(list(sec = 0, min = 47L, hour = 0L, mday = 1L, mon = 5L,
> year = 109L, wday = 1L, yday = 151L, isdst = -1L), .Names = c("sec",
> "min", "hour", "mday", "mon", "year", "wday", "yday", "isdst"
> ), class = c("POSIXt", "POSIXlt"))
>> dput(time4)
> structure(list(sec = 0, min = 57L, hour = 0L, mday = 1L, mon = 5L,
> year = 109L, wday = 1L, yday = 151L, isdst = -1L), .Names = c("sec",
> "min", "hour", "mday", "mon", "year", "wday", "yday", "isdst"
> ), class = c("POSIXt", "POSIXlt"))
>> sessionInfo()
> R version 2.11.0 (2010-04-22)
> i386-pc-mingw32
>
> locale:
> [1] LC_COLLATE=Icelandic_Iceland.1252 LC_CTYPE=Icelandic_Iceland.1252
> [3] LC_MONETARY=Icelandic_Iceland.1252 LC_NUMERIC=C
> [5] LC_TIME=Icelandic_Iceland.1252
>
> attached base packages:
> [1] grDevices datasets splines graphics stats tcltk utils
> [8] methods base
>
> other attached packages:
> [1] svSocket_0.9-48 TinnR_1.0.3 R2HTML_2.0.0 Hmisc_3.7-0.1
> [5] survival_2.35-8
>
> loaded via a namespace (and not attached):
> [1] cluster_1.12.3 grid_2.11.0 lattice_0.18-5 svMisc_0.9-57
> tools_2.11.0
I don't know exactly what is going on, but this at least gives me an
idea. It looks to be related to timezones and daylight savings times.
The difference between your dput outputs and mine is that yours has the
isdst = -1L and mine had isdst = 1L. However, even if I used your exact
structure from the dput, I still get "Time difference of 10 mins". I
have seen isdst=-1L before, and usually it is when there is ambiguity as
to whether the time is in daylight savings time or not. I don't know
anything about Iceland with regards to DST (Wikipedia says they don't
observe it, for what that is worth).
It seems you have a locale/timezone/DST interaction happening somehow.
What happens if you explicitly set the timezone using tz in strptime?
Beyond that, I don't have any further ideas of how to fix it.
> Thanks,
>
> Julian
--
Brian Diggs
Senior Research Associate, Department of Surgery, Oregon Health &
Science University
More information about the R-help
mailing list