Исправить поведение split.xts до эпохи (1-1-1970)

Я заметил странное поведение xts при попытке разделить объект, который уходит далеко в прошлое. Поведение раскола меняется в эпоху.

#Create some data
dates <- seq(as.Date("1960-01-01"),as.Date("1980-01-01"),"days")
x <- rnorm(length(dates))
data <- xts(x, order.by=dates)

Если мы разделим объект xts по неделям, он определяет последний день недели как понедельник до 1970 года. После 1970 года он определяет его как воскресенье (ожидаемое поведение).

#Split the data, keep the last day of the week
lastdayofweek <- do.call(rbind, lapply(split(data, "weeks"), last))
head(lastdayofweek)
tail(lastdayofweek)

Календарь на 1960 год

Календарь на 1979 год

Это кажется проблемой только в течение нескольких недель, а не месяцев или лет.

#Split the data, keep the last day of the month
lastdayofmonth <- do.call(rbind, lapply(split(data, "months"), last))
head(lastdayofmonth)
tail(lastdayofmonth)

Поведение, похоже, связано со следующим, хотя я не уверен, почему оно применимо только к неделям. Из крана xts.

Для дат до эпохи (1970-01-01) время окончания выровнено по 59.0000 секундам. Это связано с ошибкой/функцией в реализации R asPOSIXct и mktime0 на уровне исходного кода C. Это ограничивает точность диапазонов до 1970 года до 1-минутной детализации с текущим обходным решением xts.

Мой обходной путь заключался в том, чтобы сдвинуть даты перед разделением объектов для данных до 1970 года, если я разбиваю по неделям. Я ожидаю, что у кого-то есть более элегантное решение (или способ избежать ошибки).

РЕДАКТИРОВАТЬ: Чтобы было ясно, в чем вопрос, я ищу ответ, который а) указывает, почему это происходит (чтобы я мог лучше понять природу ошибки и, следовательно, избежать ее) и/или б) лучший обходной путь разобраться с этим.


r xts
person lilster    schedule 12.01.2013    source источник
comment
Отчеты об ошибках следует отправлять по электронной почте сопровождающему или размещать на веб-странице проекта.   -  person GSee    schedule 13.01.2013


Ответы (1)


Одним из «обходных путей» было бы проверить Rev. 743 или более раннюю версию, поскольку мне кажется, что это сломалось в Rev. 744.

svn checkout svn://svn.r-forge.r-project.org/svnroot/xts/@743

Но намного лучше отправить отчет об ошибке, чтобы вам не приходилось вечно использовать старую версию. (также, конечно, другие ошибки могли быть исправлены и/или добавлены новые функции, начиная с версии 743)

person GSee    schedule 13.01.2013