R xts和data.table和IDate

时间:2016-01-15 10:58:24

标签: r data.table xts

这是此问题R xts and data.table的扩展。

我看到as.xts.data.tabledata.table包的新增内容。

当我使用IDate(整数日期)设置日期时,我在使用此错误消息进行xts转换后查看表时会出现错误:

  

index.xts(x [1,])中的错误:不支持的'indexClass'索引   类型:IDate

CODE SNIPPET

library(data.table)
library(xts)

# I am setting dates as IDate here in example, but in my code 
#   I get a subset from elsewhere
dt <- data.table(date = c(as.IDate("2014-12-31"),
                          as.IDate("2015-12-31"),
                          as.IDate("2016-12-31")), 
                 nav = c(100,101,99),
                 key = "date")

str(dt)
# Classes ‘data.table’ and 'data.frame':    3 obs. of  2 variables:
#   $ date: IDate, format: "2014-12-31" "2015-12-31" ...
# $ nav : num  100 101 99
# - attr(*, "sorted")= chr "date"
# - attr(*, ".internal.selfref")=<externalptr> 


#convert to xts for PerformanceAnalytics (IDate not supported)
dt.xts <- as.xts.data.table(dt) # seems to work okay but...

str(dt.xts) # gives indexing type error above

我理解IDate仍然在发展 - &#34;仍然是实验性的!&#34; 。在过渡期间摆脱IDate类型以使用xts的最佳方法是什么? [我试图强迫这种类型无效 - as.xts(as.Date(dt$date))]

未来as.xts.data.table可以修复IDates吗?

R3.2.2。版本:xts:0.9-7 zoo:1 / 7-12 data.table:1.9.6

1 个答案:

答案 0 :(得分:2)

2016-04-13更新:
刚刚在data.table的最新开发版本中修复了这个问题。您不再需要处理IDate的转换。问题中的代码可以正常使用。
低于过时的答案,对于data.table 1.9.6或更低版本的人有用。

您需要在转换为xts之前将IDate字段更改为Date。在as.xts方法开发时,未考虑IDate和ITime类型 补丁可以支持,已经有一个与xts相关的错误修正等待合并 解决您的问题:

library(data.table)
library(xts)
dt <- data.table(date = c(as.IDate("2014-12-31"),
                          as.IDate("2015-12-31"),
                          as.IDate("2016-12-31")), 
                 nav = c(100,101,99),
                 key = "date")
dt[, date := as.Date(as.integer(date))]
dt.xts <- as.xts.data.table(dt)