[R] strange date problem - May 3, 1992 is NA
William Dunlap
wdunlap at tibco.com
Wed Jun 22 22:29:37 CEST 2011
I can reproduce your problem when using a time that
doesn't exist because it is between 2am and 3am on
the Sunday that we switch from winter time to summer
time:
> z <- strptime(paste(paste(sep="/", 4, 5, 1992), "2:30"),
format="%m/%d/%Y %H:%M")
> z
[1] "1992-04-05 02:30:00"
> is.na(z)
[1] TRUE
> str(unclass(z))
List of 9
$ sec : num 0
$ min : int 30
$ hour : int 2
$ mday : int 5
$ mon : int 3
$ year : int 92
$ wday : int 0
$ yday : int 95
$ isdst: int -1
Perhaps your time zone description file has the time
changing around midnight on May 3, 1992.
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of William Dunlap
> Sent: Wednesday, June 22, 2011 1:23 PM
> To: Alexander Shenkin; r-help at r-project.org
> Subject: Re: [R] strange date problem - May 3, 1992 is NA
>
> The isdst value -1 doesn't seem right. Shouldn't it
> be either 0 (not daylight savings time) or 1 (yes dst)?
> I've only seen isdst==-1 when all the other entries
> were NA (that happens when the string doesn't match
> the format).
>
> In the parts of the US where daylight savings time is
> used the switchover took place near the beginning of
> April in 1992, so you should have isdst=1 by May 3.
> Perhaps you have an odd timezone file on your machine.
>
> Bill Dunlap
> Spotfire, TIBCO Software
> wdunlap tibco.com
>
> > -----Original Message-----
> > From: Alexander Shenkin [mailto:ashenkin at ufl.edu]
> > Sent: Wednesday, June 22, 2011 1:07 PM
> > To: William Dunlap
> > Subject: Re: [R] strange date problem - May 3, 1992 is NA
> >
> > Hi Bill,
> >
> > Thanks for your reply. The results look almost identical
> to my eyes,
> > except for the mysterious "TRUE"...
> >
> > > methods("is.na")
> > [1] is.na.data.frame is.na.numeric_version is.na.POSIXlt
> > > trace(methods("is.na"), quote(cat(" is.na: class(x)=",
> > class(x), "\n")))
> > Tracing function "is.na.data.frame" in package "base"
> > Tracing function "is.na.numeric_version" in package "base"
> > Tracing function "is.na.POSIXlt" in package "base"
> > [1] "is.na.data.frame" "is.na.numeric_version" "is.na.POSIXlt"
> > > z <- strptime("5/3/1992", format="%m/%d/%Y")
> > > is.na(z)
> > Tracing is.na.POSIXlt(z) on entry
> > is.na: class(x)= POSIXlt POSIXt
> > [1] TRUE
> > > str(unclass(z))
> > List of 9
> > $ sec : num 0
> > $ min : int 0
> > $ hour : int 0
> > $ mday : int 3
> > $ mon : int 4
> > $ year : int 92
> > $ wday : int 0
> > $ yday : int 123
> > $ isdst: int -1
> >
> >
> > > sessionInfo()
> > R version 2.12.1 (2010-12-16)
> > Platform: i386-pc-mingw32/i386 (32-bit)
> >
> > locale:
> > [1] LC_COLLATE=English_United States.1252
> > [2] LC_CTYPE=English_United States.1252
> > [3] LC_MONETARY=English_United States.1252
> > [4] LC_NUMERIC=C
> > [5] LC_TIME=English_United States.1252
> >
> > attached base packages:
> > [1] stats graphics grDevices utils datasets methods base
> >
> > loaded via a namespace (and not attached):
> > [1] tools_2.12.1
> >
> > thanks,
> > allie
> >
> > On 6/22/2011 1:50 PM, William Dunlap wrote:
> > > What do you get for the following commands, which
> > > show which is.na method is getting called and
> > > the internal structure of the dataset made
> > > by strptime?
> > >
> > >> methods("is.na")
> > > [1] is.na.data.frame is.na.numeric_version is.na.POSIXlt
> > >> trace(methods("is.na"), quote(cat(" is.na: class(x)=", class(x),
> > > "\n")))
> > > Tracing function "is.na.data.frame" in package "base"
> > > Tracing function "is.na.numeric_version" in package "base"
> > > Tracing function "is.na.POSIXlt" in package "base"
> > > [1] "is.na.data.frame" "is.na.numeric_version"
> "is.na.POSIXlt"
> > >> z <- strptime("5/3/1992", format="%m/%d/%Y")
> > >> is.na(z)
> > > Tracing is.na.POSIXlt(z) on entry
> > > is.na: class(x)= POSIXlt POSIXt
> > > [1] FALSE
> > >> str(unclass(z))
> > > List of 9
> > > $ sec : num 0
> > > $ min : int 0
> > > $ hour : int 0
> > > $ mday : int 3
> > > $ mon : int 4
> > > $ year : int 92
> > > $ wday : int 0
> > > $ yday : int 123
> > > $ isdst: int 1
> > >
> > >
> > >
> > > Bill Dunlap
> > > Spotfire, TIBCO Software
> > > wdunlap tibco.com
> > >
> > >> -----Original Message-----
> > >> From: r-help-bounces at r-project.org
> > >> [mailto:r-help-bounces at r-project.org] On Behalf Of
> > Alexander Shenkin
> > >> Sent: Wednesday, June 22, 2011 11:41 AM
> > >> To: Sarah Goslee; r-help at r-project.org
> > >> Subject: Re: [R] strange date problem - May 3, 1992 is NA
> > >>
> > >> On 6/22/2011 1:34 PM, Sarah Goslee wrote:
> > >>> On Wed, Jun 22, 2011 at 2:28 PM, David Winsemius
> > >> <dwinsemius at comcast.net> wrote:
> > >>>>
> > >>>> On Jun 22, 2011, at 2:03 PM, Sarah Goslee wrote:
> > >>>>
> > >>>>> Hi,
> > >>>>>
> > >>>>> On Wed, Jun 22, 2011 at 11:40 AM, Alexander Shenkin
> > >> <ashenkin at ufl.edu>
> > >>>>> wrote:
> > >>>>>>>
> > >>>>>>> is.na(strptime("5/2/1992", format="%m/%d/%Y"))
> > >>>>>>
> > >>>>>> [1] FALSE
> > >>>>>>>
> > >>>>>>> is.na(strptime("5/3/1992", format="%m/%d/%Y"))
> > >>>>>>
> > >>>>>> [1] TRUE
> > >>>>>
> > >>>>> I can't reproduce your problem on R 2.13.0 on linux:
> > >>>>
> > >>>> I also cannot reproduce it on a Mac with 2.13.0 beta
> > >>>
> > >>> Which strongly suggests that you should start by
> upgrading your R
> > >>> installation if at all possible.
> > >>>
> > >>> I'd also recommend trying it on a default R session,
> with no extra
> > >>> packages loaded, and no items in your workspace. It's
> > possible that
> > >>> something else is interfering.
> > >>>
> > >>> On linux, that's achieved by typing R --vanilla at the
> > command line.
> > >>> I'm afraid I don't know how to do it for Windows, but should be
> > >>> similarly straightforward.
> > >>>
> > >> Thanks Sarah. Still getting the problem. I should surely
> > >> upgrade, but
> > >> still, not a bad idea to get to the bottom of this, or at
> > >> least have it
> > >> documented as a known issue. BTW, I'm on Windows 7 Pro x64.
> > >>
> > >> (running Rgui.exe --vanilla):
> > >>
> > >>> is.na(strptime("5/3/1992", format="%m/%d/%Y"))
> > >> [1] TRUE
> > >>
> > >>> is.na(strptime("5/2/1992", format="%m/%d/%Y"))
> > >> [1] FALSE
> > >>
> > >>> sessionInfo()
> > >> R version 2.12.1 (2010-12-16)
> > >> Platform: i386-pc-mingw32/i386 (32-bit)
> > >>
> > >> locale:
> > >> [1] LC_COLLATE=English_United States.1252
> > >> [2] LC_CTYPE=English_United States.1252
> > >> [3] LC_MONETARY=English_United States.1252
> > >> [4] LC_NUMERIC=C
> > >> [5] LC_TIME=English_United States.1252
> > >>
> > >> attached base packages:
> > >> [1] stats graphics grDevices utils datasets
> > methods base
> > >>
> > >> ______________________________________________
> > >> R-help at 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.
> > >>
> >
>
> ______________________________________________
> R-help at 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.
>
More information about the R-help
mailing list