【问题标题】:R xts and data.table and IDateR xts 和 data.table 和 IDate
【发布时间】:2016-04-20 22:58:53
【问题描述】:

这是这个问题R xts and data.table的延伸。

我知道as.xts.data.tabledata.table 包的新成员。

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

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

代码片段

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 仍在开发中 - “仍处于实验阶段!”。在过渡期间摆脱 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

【问题讨论】:

标签: r data.table xts


【解决方案1】:

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)

【讨论】:

  • 谢谢@jangorecki。我做了一个这样的工作。 dt[, date := as.Date(as.integer(date))] 的一个问题 - 它删除了密钥,因为“日期”被视为已更改。 (其他人请注意这一点,然后使用 setkey() 重新键入您的表)
猜你喜欢
  • 2012-03-06
  • 2015-04-04
  • 1970-01-01
  • 2019-02-16
  • 2016-08-01
  • 1970-01-01
  • 2021-04-13
  • 2023-01-24
  • 2020-08-20
相关资源
最近更新 更多