New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[R-Forge #2577] time-based to Date-based index causes 'duplicate' index values #53

joshuaulrich opened this Issue Feb 26, 2015 · 0 comments


None yet
1 participant

joshuaulrich commented Feb 26, 2015

Submitted by: Joshua Ulrich
Assigned to: Jeff Ryan
R-Forge link

From an email exchange with Garrett See:

I think going from time-based to date-based is common practice and should be supported. However, I probably don't fully appreciate the problem.

Perhaps a better illustration is to.daily() which already returns an object indexed by Date, but that object has an indexTZ:

systime <- as.POSIXct('2013-02-05 01:01', tz='America/Chicago')
x <- xts(rnorm(10000), systime-10000:1*60)
(D <- to.daily(x))
indexClass(D) # Date
indexTZ(D) # 'America/Chicago'
D  # 02/05 appears twice


Date: 2013-02-24 03:38
Sender: Jeff Ryan
Note that this is really an R issue, though one that I would of course like to mask with xts.

> as.Date(format(index(to.period(x,'days'))))
[1] '2013-01-29' '2013-01-30' '2013-01-31' '2013-02-01' '2013-02-02'
[6] '2013-02-03' '2013-02-04' '2013-02-05'
> as.Date((index(to.period(x,'days'))))
[1] '2013-01-30' '2013-01-31' '2013-02-01' '2013-02-02' '2013-02-03'
[6] '2013-02-04' '2013-02-05' '2013-02-05'

.drop.time should probably use the format() approach to assure the avoidance of Dates in R as converted from POSIXct.

Date: 2013-03-02 17:43
Sender: Garrett See
Would it suffice to have to.period just provide the timezone when converting the index to Date.?

R> as.Date(index(to.period(x, 'days')), origin='1970-01-01', tz='America/Chicago')
[1] "2013-01-29" "2013-01-30" "2013-01-31" "2013-02-01" "2013-02-02"
[6] "2013-02-03" "2013-02-04" "2013-02-05"

@joshuaulrich joshuaulrich added the bug label Feb 26, 2015

joshuaulrich added a commit that referenced this issue Nov 4, 2018

Convert to POSIXlt before Date
as.Date.POSIXct() does not respect the tzone attribute of the POSIXct
object, so the Date is a UTC date. Convert to POSIXlt first, because
as.Date.POSIXlt() does use the timezone and therefore returns a local

See #53, see #277.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment