Skip to content

xts NA date for

11 messages · Wolfgang Wu, G See, Joshua Ulrich +3 more

#
Hello All,
I am new to R and having an issue with xts when I try and used it with
certain dates and times in 1987.

Example
[,1]
1987-04-05 12:00:00 1

# This date and time do not work
[,1]
<NA> 1

I don't think the issue is with strptime since it seems to work fine
on the offending date and time, i.e.
[1] "1987-04-05 02:00:00"

Any suggestion or work arounds would be appreciated.

Thanks,
Dan
#
Hmmm works fine for me.

xts(1, order.by = strptime("04/05/87 2:00",format="%m/%d/%y %H:%M"))

[,1]
1987-04-05 02:00:00 ? ?1

Maybe an old version of xts? I am using xts version 0.8-0. (you can check that with?sessionInfo().)

Regards,
?
Wolfgang Wu




----- Urspr?ngliche Message -----
Von: Dan Potter <arsanalytica at gmail.com>
An: r-sig-finance at r-project.org
Cc: 
Gesendet: 12:51 Freitag, 23.September 2011 
Betreff: [R-SIG-Finance] xts NA date for

Hello All,
I am new to R and having an issue with xts when I try and used it with
certain dates and times in 1987.

Example
[,1]
1987-04-05 12:00:00 1

# This date and time do not work
[,1]
<NA> 1

I don't think the issue is with strptime since it seems to work fine
on the offending date and time, i.e.
[1] "1987-04-05 02:00:00"

Any suggestion or work arounds would be appreciated.

Thanks,
Dan

_______________________________________________
R-SIG-Finance at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only. If you want to post, subscribe first.
-- Also note that this is not the r-help list where general R questions should go.
#
Thank you Wolfgang. ?On my machine sessionInfo shows I am using xts
version 0.8-2 -
I think it is the latest one, see
http://cran.r-project.org/web/packages/xts/index.html
Maybe someone can confirm correct operation in 0.8-2.  Could this be a
Revo/base R version issue?
R version 2.12.2 (2011-02-25)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United
States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United
States.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] dplR_1.4.7       xts_0.8-2        zoo_1.7-2        Revobase_4.3.0
 RevoMods_4.3.0   RevoScaleR_1.2-0 lattice_0.19-23
On Fri, Sep 23, 2011 at 8:15 AM, Wolfgang Wu <wobwu22 at yahoo.de> wrote:
#
It is something within strptime and/or as.POSIXct.  Basically POSIXct
is causing some issue, somewhere.  In my TZ "America/Chicago" I see:
[1] "1987-04-05 02:00:00 CDT"
[1] "1987-04-05 01:00:00 CST"
[1] "1987-04-05 01:00:00 CST"

Looks like a strange DST issue in the underlying R code.  I'll
continue to investigate.
R version 2.13.1 RC (2011-07-04 r56273)
Platform: x86_64-apple-darwin10.7.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] xts_0.8-3 zoo_1.7-2

loaded via a namespace (and not attached):
[1] grid_2.13.1     lattice_0.19-17

Jeff
On Fri, Sep 23, 2011 at 7:38 AM, G See <gsee000 at gmail.com> wrote:

  
    
#
Dan,

This is probably an issue with the start/end of daylight saving time
in your timezone.

Best,
--
Joshua Ulrich ?| ?FOSS Trading: www.fosstrading.com
On Fri, Sep 23, 2011 at 7:38 AM, G See <gsee000 at gmail.com> wrote:
#
[1] "1987-04-05 02:00:00 CDT"

This time doesn't exists. It would be 1:00 or 3:00.

http://www.timeanddate.com/worldclock/clockchange.html?n=64&year=1987

It is too early for me to figure out the nuances of this logic, i.e.
what should it be doing when you pass in a time that doesn't exist in
your TZ.  For now though, that is clearly the heart of the issue.

Jeff
On Fri, Sep 23, 2011 at 7:44 AM, Joshua Ulrich <josh.m.ulrich at gmail.com> wrote:

  
    
#
Thank you Jeff and Josh, that was very helpful. ?Other systems I have
worked with haven't included embedded daylight savings magic. (And I'm
not sure I like it unless I can compute time differences and durations
correctly when using it.)

My data (and many datasets I have work with) are UTC stamped in order
to avoid daylight savings issues and allow a simple way for
contemporaneous comparison between them.? I assumed the default xts,
strptime, etc. time zone would be UTC and not my current timezone.

The following is a solution for my problem
[,1]
1987-04-05 02:00:00    1
Warning message:
timezone of object (UTC) is different than current timezone ().

I wonder why my own calls to strptime with tz unspecified do not
include a timezone in their results, whereas Jeff's does, e.g.,
[1] "EDT"
[1] "1987-04-05 02:00:00"

Versus

 On Fri, Sep 23, 2011 at 9:02 AM, Jeffrey Ryan
<jeffrey.ryan at lemnica.com> wrote:
>
 > > strptime("04/05/87 2:00",format="%m/%d/%y %H:%M")
 > [1] "1987-04-05 02:00:00 CDT"

Given these issues, it would be nice if the strptime, xts etc. time
and date print methods would always included the time zone.

Thanks Again,
Dan
On Fri, Sep 23, 2011 at 9:02 AM, Jeffrey Ryan <jeffrey.ryan at lemnica.com> wrote:
#
On Fri, 2011-09-23 at 10:27 -0400, Dan Potter wrote:
One way to deal with this is to set your TZ to R to 'GMT'

This is typically how I handle it when I'm dealing with data all in GMT
or UTC.

  
    
#
Hi Dan,

I think it is a platform issue. Windows has been problematic around
the edges of TZ behavior - forever.  Sys.timezone() and
Sys.getenv("TZ") even behave differently from time to time.  I would
recommend the latter over the former.  And non-windows above all ;-)

That said, I think you are always best being explicit about the TZ you
want when constructing objects in R.  xts isn't the issue here, and I
am not too sure I could design it to compensate for the incoming data
without having some bit of magic.

I'd also use POSIXct more than POSIXlt (the result of strptime here).
It will be faster and likely a bit less confusing as 'ct' objects are
time_t objects in C, whereas 'lt' objects are a wildly (and
brilliantly) modified struct tm object.

Thanks for the report/email though, and if I can think of a better
solution I'll pass along and/or update xts.

Best,
Jeff
On Fri, Sep 23, 2011 at 9:27 AM, Dan Potter <arsanalytica at gmail.com> wrote:

  
    
#
One example of what Brian is pointing out:

# Making sure you are in the correct TZ for your session.
Sys.setenv(TZ="UTC")
strptime("4/5/87 2:00",format="%m/%d/%y %H:%M")
#[1] "1987-04-05 02:00:00 UTC"

as.POSIXct(strptime("4/5/87 2:00",format="%m/%d/%y %H:%M"))
#[1] "1987-04-05 02:00:00 UTC"

# otherwise...
Sys.setenv(TZ="America/Chicago")
strptime("4/5/87 2:00",format="%m/%d/%y %H:%M")
#[1] "1987-04-05 02:00:00 CDT"
as.POSIXct(strptime("4/5/87 2:00",format="%m/%d/%y %H:%M"))
#[1] "1987-04-05 01:00:00 CST"

I still have an issue with 02:00:00 CDT ... since that just is wrong.

Jeff
On Fri, Sep 23, 2011 at 9:38 AM, Jeffrey Ryan <jeffrey.ryan at lemnica.com> wrote: