2013-04-23 1 views
3

Я пытаюсь объединить два объекта xts. Один из них производится с использованием quantmod, а другой - с использованием xts() на data.frame.merge.xts производит ложные результаты при слиянии недельных серий

> class(rets.weekly) 
[1] "xts" "zoo" 
> class(result.weekly.xts) 
[1] "xts" "zoo" 
> tail(rets.weekly) 
        ret 
2013-03-22 0.002231087 
2013-03-26 -0.007846839 
2013-04-06 -0.007501789 
2013-04-12 0.001569891 
2013-04-20 -0.023628035 
2013-04-21 0.005055358 
> tail(result.weekly.xts) 
      prediction.date standard.Deviation 
2013-03-22 "2013-03-22"  "0.01681222"  
2013-03-26 "2013-03-26"  "0.01578790"  
2013-04-06 "2013-04-06"  "0.01578170"  
2013-04-12 "2013-04-12"  "0.01556793"  
2013-04-20 "2013-04-20"  "0.01504504"  
2013-04-21 "2013-04-21"  "0.01696417"  
> tail(merge.xts(result.weekly.xts , rets.weekly)) 
      prediction.date standard.Deviation   ret 
2013-04-07    NA     NA -0.007501789 
2013-04-12    NA   0.01556793   NA 
2013-04-13    NA     NA 0.001569891 
2013-04-20    NA   0.01504504   NA 
2013-04-21    NA   0.01696417 -0.023628035 
2013-04-22    NA     NA 0.005055358 
Warning message: 
In merge.xts(result.weekly.xts, rets.weekly) : NAs introduced by coercion 
> tail(merge.zoo(result.weekly.xts , rets.weekly)) 
<< R QUIT>> 

Как вы можете видеть, даты идентичны. Обе коллекции - xts объектов. Вызов merge.xts вызвал неправильный вывод. Я не знаю, откуда эти даты. При попытке слияния с использованием merge.zoo R просто заканчивается (стиль синего экрана).

> sessionInfo() 
R version 2.15.3 (2013-03-01) 
Platform: i386-w64-mingw32/i386 (32-bit) 

locale: 
[1] LC_COLLATE=Hebrew_Israel.1255 LC_CTYPE=Hebrew_Israel.1255 LC_MONETARY=Hebrew_Israel.1255 LC_NUMERIC=C     LC_TIME=Hebrew_Israel.1255  

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

other attached packages: 
[1] quantmod_0.4-0 TTR_0.22-0  xts_0.9-3  zoo_1.7-9  Defaults_1.1-1 

loaded via a namespace (and not attached): 
[1] grid_2.15.3  lattice_0.20-13 tools_2.15.3 
+0

Пожалуйста, предоставить [воспроизводимый пример] (http://stackoverflow.com/q/5963269/271616) и вывод из 'sessionInfo()'. –

+0

Вы использовали 'to.weekly' на предыдущем шаге? – GSee

+0

Эта часть 'sessionInfo()' не является той частью, о которой мы заботимся. Пожалуйста, опубликуйте остальную часть. – GSee

ответ

3

Это давняя ошибка часового пояса. Часовой пояс не передается по вызову as.Date, где он должен быть. Я отправил патч для него по электронной почте почти месяц назад. В XTS/R/index.R, линия 29:31, которая в настоящее время:

if(value[[1]] == "Date") 
    #return(as.Date(.index(x)/86400)) 
    return(structure(.index(x) %/% 86400, class="Date")) 

должен быть изменен на

if(value[[1]] == "Date") 
    as.Date(as.POSIXct.numeric(attr(x, "index"), origin=as.Date('1970-01-01')), 
      tz=indexTZ(x)) 

Кроме того, xts:::as.POSIXct.numeric должны быть обновлено, чтобы соответствовать базовой R.

+0

Спасибо за повтор. я бы не догадался. У меня нет файла 'index.r' в' C: \ Program Files \ R \ R-2.15.3 \ library \ xts \ R'. я смотрю не в том месте? – haki

+0

Вы смотрите на сборку окон. Вам нужно посмотреть на источник. Вы можете проверить это из https://r-forge.r-project.org/scm/?group_id=118. [Это сообщение] (http://stackoverflow.com/questions/11105131/cannot-install-r-forge-package-using-install-packages) может помочь. – GSee

+0

Это конкретный файл: https://r-forge.r-project.org/scm/viewvc.php/pkg/xts/R/index.R?view=markup&root=xts – GSee

Смежные вопросы