如何快速高效地拆分和合並xts
對象x
使用比x
引用的更大的因子列表?使用所有因子(包括缺失因子)合併拆分xt的列表
這個簡單的例子不會產生完整的因子列表(填充零)。
a = cbind(value = runif(2), group = c(1,3))
x = xts(a, Sys.Date() + 1:nrow(a))
do.call(merge, c(split(x$value, x$group), fill = 0))
value.1 value.3
2016-12-08 0.3403723 0.0000000
2016-12-09 0.0000000 0.5247683
我的解決方法是追加與各組相關的虛值,然後分割與合併,然後取出假值作爲
all.groups = 1:5
x.all.groups = xts(cbind(value = 0, f = all.groups), Sys.Date()-1:length(all.groups))
x = rbind(x,x.all.groups)
as.xts(do.call(merge, c(split(x$value, x$group), fill = 0)))[!(index(x) %in% index(x.all.groups)),]
value.1 value.2 value.3 value.4 value.5
2016-12-08 0.3455855 0 0.00000 0 0
2016-12-09 0.0000000 0 0.16545 0 0
另一個解決辦法是追加遺漏組的操作split
之間的列表和merge
。
但是,這些解決方案似乎不必要的龐大。有什麼建議麼? 有沒有更好的方法來利用split
(或其他功能)及其參數?