将datatable列转换为xts

时间:2019-04-04 15:57:57

标签: r datatable xts

我有一个数据表,现在我想使用数据表语法在xts中进行一些计算。我的第一个问题是,通常是否建议这样做,即这两个软件包是否可以很好地协同工作。另一种选择是将数据表转换为xts,并在我计划对xts进行转换之后将其向后转换。

以下简单的DT说明了我的问题:

library(data.table)
dataset <- data.table(ID=c(rep("A",4416),rep("B",4416)),
x = c(rnorm(2208*2)), time=c(seq(as.Date("1988/03/15"),
as.Date("2000/04/16"), "day"),seq(as.Date("1988/03/15"),
as.Date("2000/04/16"), "day")))
dataset

library(xts)
dataset[,x_xts := NULL]
dataset[,x_xts := xts(x,order.by = time),by=ID]
dataset # this looks fine
str(dataset) # this throws an error

1)您可以建议在数据表中使用xts吗?

2)如果不是,您是否建议将数据表转换为xts,然后再返回?

要提供更多信息,我想为面板中的每个单元估算一个ARIMA模型,这就是为什么我需要使用我认为的xts的原因。 谢谢。

1 个答案:

答案 0 :(得分:1)

我认为这个str(dataset)错误比strdata.table的组合与xts更相关

如果您使用glimpse中的替代功能dplyr或进行其他操作,则效果很好:

library(dplyr)
glimpse(dataset)

##Examples
cor(dataset$x,dataset$x_xts)
lm(formula = x~x_xts, data=dataset)
dataset[, A:=x_xts*x]

无论如何,如果您觉得更舒服,也可以使用as.xts.data.table函数:https://www.rdocumentation.org/packages/data.table/versions/1.12.0/topics/as.xts.data.table