R: SQL 转换为旋转的 xts 对象

R: SQL into pivoted xts object

一个简单的查询returns 3 列:工具、日期、价格

数据如下:

library("xts")
dta = data.frame(
  sample(x=c("a", "b", "c", "d", "e", "f"), size=367, replace=TRUE),
  c(as.Date('2016-01-01') + 0:366), 
  c(0:366))
names(dta) <- c("instr", "date", "price")

我想要的是一个旋转的 xts 对象,如下所示:

            "a"   "b"   "c"   "d"   "e"   "f"
2016-01-01  1     NA    NA    NA    NA    NA
2016-01-02  NA    2     NA    NA    NA    NA
2016-01-03  3     NA    NA    NA    NA    NA
2016-01-04  NA    NA    NA    NA    4     NA
...

我正在考虑将数据拆分为 "instrument"-向量:

list_of_instr_vectors <- split(dta, dta$instr)

将列表的所有 data.frames 转换为 xts 对象和 merge.xts 那些。

也许从一开始就把 data.frame 变成 xts 会更简单:

xts_dta = as.xts(dta, order.by = dta$date) 

然后对数据进行透视……但是怎么做呢?

我敢肯定,有一种简单的方法可以完成这项常见任务...但是怎么做呢?

感谢任何提示! 马可

read.zoosplit 参数一起使用:

z <- read.zoo(dta, split = 1, index = 2)
as.xts(z)