2015-08-02 4 views
2

Я использую R 3.2.1 для Mac OS X и, похоже, столкнулся с неправильным поведением в подмножестве xts. Короче говоря, подмножество ежемесячных данных дает результат, который составляет 1 месяц, отставая от того, что должно быть. Вот простой пример, который аналогичен анализу paleotemperature я делаю:Подмножество xts дает неверные результаты за месяцы

Сначала я сделать некоторые тестовые данные для примера:

xts.test <- xts(rnorm(440*12, mean=0, sd=10),order.by=timeBasedSeq(155001/1989)) 

Это дает правильный xts файл AFAICT. Вот первый год 12 месяцев.

head(xts.test, 12L) 

       [,1] 
Jan 1550 -6.9301845 
Feb 1550 12.1581413 
Mar 1550 3.9688139 
Apr 1550 3.9540268 
May 1550 9.8200923 
Jun 1550 -4.2090998 
Jul 1550 7.5950340 
Aug 1550 -6.5967389 
Sep 1550 -0.6736532 
Oct 1550 6.4939221 
Nov 1550 4.3916465 
Dec 1550 19.8800872 

Однако, когда я пытаюсь Подмножество это, выбрав для одного года, я получаю следующее:

xts.test["1550"] 

       [,1] 
Feb 1550 12.1581413 
Mar 1550 3.9688139 
Apr 1550 3.9540268 
May 1550 9.8200923 
Jun 1550 -4.2090998 
Jul 1550 7.5950340 
Aug 1550 -6.5967389 
Sep 1550 -0.6736532 
Oct 1550 6.4939221 
Nov 1550 4.3916465 
Dec 1550 19.8800872 
Jan 1551 -2.9549224 

То есть, вместо правильного январе-декабре 1550, я получаю февраля 1550 через янв. 1551

Я получаю аналогичное отставание, когда пытаюсь подмножество, выбрав месяцы года. c(2, 3,4,5,6,7) Получите меня с апреля по сентябрь, а не с марта по август.

Любые мысли здесь?

+0

Не могли бы вы установить семя с 'set.seed' и описать все пакеты, которые вы загрузили с помощью' library' или 'require'? Это поможет воспроизвести поведение. – PavoDive

ответ

4

Это ошибка, исправленная в последних development version on GitHub.

R> require(xts) 
R> xts.test <- xts(rnorm(440*12, mean=0, sd=10),order.by=timeBasedSeq(155001/1989)) 
R> packageVersion("xts") 
[1] ‘0.9.7’ 
R> str(xts.test) # notice TZ is not set 
An ‘xts’ object on Jan 1550/Dec 1989 containing: 
    Data: num [1:5280, 1] -8.11 -7.65 2.07 -3.29 17.03 ... 
    Indexed by objects of class: [yearmon] TZ: 
    xts Attributes: 
NULL 

Обратите внимание, что TZ не установлен выше, но он установлен в новой версии ниже.

R> packageVersion("xts") 
[1] ‘0.9.8’ 
R> str(xts.test) # notice TZ is set 
An ‘xts’ object on Jan 1550/Dec 1989 containing: 
    Data: num [1:5280, 1] 0.357 12.318 24.291 22.181 6.123 ... 
    Indexed by objects of class: [yearmon] TZ: UTC 
    xts Attributes: 
NULL 
+0

Спасибо. Надеюсь, он исправит apply.yearly и связанные методы тоже. Можете ли вы сказать мне, когда это будет доступно как устанавливаемый пакет? –

+0

FWIW, я попытался установить текущую версию vxt с помощью R devtools. Однако компиляция завершилась неудачей, потому что у нее есть вызов (unneeded?) В gfortran 4.8. –

+0

@MichaelBarton: это необходимо. Я предполагаю, что вы в Windows; у вас установлен [Rtools] (https://cran.r-project.org/bin/windows/Rtools/)? –