Marie Sivertsen
2009-Jan-22 18:54 UTC
[R] Unexpected behaviour of the as.Date (was: Error as.Date on Invalid Dates)
Dear Brian, I dont understand what you mean. The thread was about the as.Date which you suggested to be used instead of the as.date. Following your advice I tried the as.Date and have questions about the observed behaviour, which was surprising to me. Is this what you call hijacking? Do you mean I ought start a new thread instead? I thought my question were relevant to the threads' subject. I am sorry if it were not. So here is the questions once again: why do the as.Date behave as in my examples below, is this intended? On Thu, Jan 22, 2009 at 3:55 PM, Brian D Ripley <ripley@stats.ox.ac.uk>wrote:> You've hijacked a thread here. > > > On Thu, 22 Jan 2009, Marie Sivertsen wrote: > > >> I am relatively new to R, so maybe I am miss something, but I now tried >> the a >> s.Date now and have problems understanding how it works (or don't work as >> it seem). >> >> Brian D Ripley wrote: >> > On Thu, 22 Jan 2009, Terry Therneau wrote: >> >> >> >> One idea is to use the as.date function, for the older (and less >> capable) 'date' >> >> class. This is currently loaded by default with library(survival). It >> re >> turns >> >> >> NA for an invalid date rather than dying. >> > >> > So does as.Date *if you specify the format* (as you have to with your >> as.da >> te: >> > it has a default one): > >My examples:> >> as.Date("2001/1/1") >> Works fine >> as.Date("1/1/2001") >> Prints "1-01-20" ??? >> as.Date("13/1/2001") >> Prints "13-01-20" ??? >> >> as.Date("1/13/2001") >> Prints error: not in standard unambigous format >> It seems that as if both "1/1/2001" and "13/1/2001" were considered by R >> to b >> e in a standard unambiguous format (or otherwise an error be reported?) >> and yet they >> >> >> are parsed incorrectly according to what one could think is obvious. It >> is a >> lso surprizing that not only "13/1/2001" but also "1/2/2001" and >> "2/1/2001" are successful but incorrect parsed as if they are unambiguous, >> and yet >> "13/1/2001" is ambiguous, though there is really just one way to parse it >> meaningfully. >> I think the strings that are incorrectly parsed should raise errors, and >> the last example should be succesful parsed. What is the reason for the >> observed >> ? >> >> >>Mvh. Marie> >> > -- > Brian D. Ripley, ripley@stats.ox.ac.uk > Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/<http://www.stats.ox.ac.uk/%7Eripley/> > University of Oxford, Tel: +44 1865 272861 (self) > 1 South Parks Road, +44 1865 272866 (PA) > Oxford OX1 3TG, UK Fax: +44 1865 272595 >[[alternative HTML version deleted]]
Gabor Grothendieck
2009-Jan-22 19:13 UTC
[R] Unexpected behaviour of the as.Date (was: Error as.Date on Invalid Dates)
The first number is the year, the second is the month and the third is the day. It ignores trailing characters.> library(chron) > f <- function(x) str(month.day.year(as.Date(x)))> f("2001/1/1")List of 3 $ month: num 1 $ day : num 1 $ year : num 2001> f("1/1/2001")List of 3 $ month: num 1 $ day : num 20 $ year : num 1> # trailing 01 ignored. > f("13/1/2001")List of 3 $ month: num 1 $ day : num 20 $ year : num 13> # no 13th month > as.Date("1/13/2001")Error in fromchar(x) : character string is not in a standard unambiguous format On Thu, Jan 22, 2009 at 1:54 PM, Marie Sivertsen <mariesivert at gmail.com> wrote:> Dear Brian, > > I dont understand what you mean. The thread was about the as.Date which you > suggested to be used instead of the as.date. Following your advice I tried > the as.Date and have questions about the observed behaviour, which was > surprising to me. Is this what you call hijacking? Do you mean I ought > start a new thread instead? I thought my question were relevant to the > threads' subject. I am sorry if it were not. > > So here is the questions once again: why do the as.Date behave as in my > examples below, is this intended? > > > > On Thu, Jan 22, 2009 at 3:55 PM, Brian D Ripley <ripley at stats.ox.ac.uk>wrote: > >> You've hijacked a thread here. >> >> >> On Thu, 22 Jan 2009, Marie Sivertsen wrote: >> >> >>> I am relatively new to R, so maybe I am miss something, but I now tried >>> the a >>> s.Date now and have problems understanding how it works (or don't work as >>> it seem). >>> >>> Brian D Ripley wrote: >>> > On Thu, 22 Jan 2009, Terry Therneau wrote: >>> >> >>> >> One idea is to use the as.date function, for the older (and less >>> capable) 'date' >>> >> class. This is currently loaded by default with library(survival). It >>> re >>> turns >>> >>> >> NA for an invalid date rather than dying. >>> > >>> > So does as.Date *if you specify the format* (as you have to with your >>> as.da >>> te: >>> > it has a default one): >> >> > > My examples: > > > >> >>> as.Date("2001/1/1") >>> Works fine >>> as.Date("1/1/2001") >>> Prints "1-01-20" ??? >>> as.Date("13/1/2001") >>> Prints "13-01-20" ??? >>> >>> as.Date("1/13/2001") >>> Prints error: not in standard unambigous format >>> It seems that as if both "1/1/2001" and "13/1/2001" were considered by R >>> to b >>> e in a standard unambiguous format (or otherwise an error be reported?) >>> and yet they >>> >>> >>> are parsed incorrectly according to what one could think is obvious. It >>> is a >>> lso surprizing that not only "13/1/2001" but also "1/2/2001" and >>> "2/1/2001" are successful but incorrect parsed as if they are unambiguous, >>> and yet >>> "13/1/2001" is ambiguous, though there is really just one way to parse it >>> meaningfully. >>> I think the strings that are incorrectly parsed should raise errors, and >>> the last example should be succesful parsed. What is the reason for the >>> observed >>> ? >>> >>> >>> > > > Mvh. > Marie > > > >> >>> >> -- >> Brian D. Ripley, ripley at stats.ox.ac.uk >> Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/<http://www.stats.ox.ac.uk/%7Eripley/> >> University of Oxford, Tel: +44 1865 272861 (self) >> 1 South Parks Road, +44 1865 272866 (PA) >> Oxford OX1 3TG, UK Fax: +44 1865 272595 >> > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. >
Greg Snow
2009-Jan-22 19:16 UTC
[R] Unexpected behaviour of the as.Date (was: Error as.Date on Invalid Dates)
I believe the original thread was about whether the function returns NA or stops
with an error when given an invalid date (such as Feb 29 in a non-leap year).
Your question was about how as.Date returned something different from what you
expected. Related, but different enough that it probably would have been better
to start a new thread.
For your question, the help page for as.Date includes:
"format: A character string. The default is
'"%Y-%m-%d"'. For
details see 'strftime'."
And
"Character strings are processed as far as
necessary for the format specified: any trailing characters are
ignored."
I don't see anything in your examples that runs counter to the above.
Remember that computers do exactly what you tell them to do, not what you think
that they should do.
--
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.snow at imail.org
801.408.8111
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Marie Sivertsen
> Sent: Thursday, January 22, 2009 11:55 AM
> To: Brian D Ripley; R-help at stat.math.ethz.ch
> Subject: [R] Unexpected behaviour of the as.Date (was: Error as.Date on
> Invalid Dates)
>
> Dear Brian,
>
> I dont understand what you mean. The thread was about the as.Date
> which you
> suggested to be used instead of the as.date. Following your advice I
> tried
> the as.Date and have questions about the observed behaviour, which was
> surprising to me. Is this what you call hijacking? Do you mean I
> ought
> start a new thread instead? I thought my question were relevant to the
> threads' subject. I am sorry if it were not.
>
> So here is the questions once again: why do the as.Date behave as in
> my
> examples below, is this intended?
>
>
>
> On Thu, Jan 22, 2009 at 3:55 PM, Brian D Ripley
> <ripley at stats.ox.ac.uk>wrote:
>
> > You've hijacked a thread here.
> >
> >
> > On Thu, 22 Jan 2009, Marie Sivertsen wrote:
> >
> >
> >> I am relatively new to R, so maybe I am miss something, but I now
> tried
> >> the a
> >> s.Date now and have problems understanding how it works (or
don't
> work as
> >> it seem).
> >>
> >> Brian D Ripley wrote:
> >> > On Thu, 22 Jan 2009, Terry Therneau wrote:
> >> >>
> >> >> One idea is to use the as.date function, for the older
(and less
> >> capable) 'date'
> >> >> class. This is currently loaded by default with
> library(survival). It
> >> re
> >> turns
> >>
> >> >> NA for an invalid date rather than dying.
> >> >
> >> > So does as.Date *if you specify the format* (as you have to
with
> your
> >> as.da
> >> te:
> >> > it has a default one):
> >
> >
>
> My examples:
>
>
>
> >
> >> as.Date("2001/1/1")
> >> Works fine
> >> as.Date("1/1/2001")
> >> Prints "1-01-20" ???
> >> as.Date("13/1/2001")
> >> Prints "13-01-20" ???
> >>
> >> as.Date("1/13/2001")
> >> Prints error: not in standard unambigous format
> >> It seems that as if both "1/1/2001" and
"13/1/2001" were considered
> by R
> >> to b
> >> e in a standard unambiguous format (or otherwise an error be
> reported?)
> >> and yet they
> >>
> >>
> >> are parsed incorrectly according to what one could think is
obvious.
> It
> >> is a
> >> lso surprizing that not only "13/1/2001" but also
"1/2/2001" and
> >> "2/1/2001" are successful but incorrect parsed as if
they are
> unambiguous,
> >> and yet
> >> "13/1/2001" is ambiguous, though there is really just
one way to
> parse it
> >> meaningfully.
> >> I think the strings that are incorrectly parsed should raise
errors,
> and
> >> the last example should be succesful parsed. What is the reason
for
> the
> >> observed
> >> ?
> >>
> >>
> >>
>
>
> Mvh.
> Marie
>
>
>
> >
> >>
> > --
> > Brian D. Ripley, ripley at stats.ox.ac.uk
> > Professor of Applied Statistics,
> http://www.stats.ox.ac.uk/~ripley/<http://www.stats.ox.ac.uk/%7Eripley/
> >
> > University of Oxford, Tel: +44 1865 272861 (self)
> > 1 South Parks Road, +44 1865 272866 (PA)
> > Oxford OX1 3TG, UK Fax: +44 1865 272595
> >
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.