如何使用来自两个XTS的数据来创建新的XTS?

问题描述 投票:0回答:1

假设我有以下两个XTS ...

a <- c(1,2,3,4)
b <- c(2,4,6,8)
x <- xts(cbind(a,b),order.by = as.Date(c("2015-01-02","2015-01-05","2015-01-06","2015-01-07")))
x

c <- c("a","b","b","a","a","b")
d <- c(10,20,10,30,20,40)
y <- xts(cbind(c,d),order.by = as.Date(c("2015-01-02","2015-01-02","2015-01-05","2015-01-06","2015-01-07","2015-01-07")))
y

这些给我...

           a b
2015-01-02 1 2
2015-01-05 2 4
2015-01-06 3 6
2015-01-07 4 8

           c   d   
2015-01-02 "a" "10"
2015-01-02 "b" "20"
2015-01-05 "b" "10"
2015-01-06 "a" "30"
2015-01-07 "a" "20"
2015-01-07 "b" "40"

我想获得以下XTS ...

            a  b
2015-01-02 10 20
2015-01-05 NA 10
2015-01-06 30 NA
2015-01-07 20 40

我尝试了几种不同的方法,例如使用功能match和coredata,但无法获得确切的答案。我认为也许从第一个具有空白值的XTS开始,然后用第二个XTS的值填充它会最好。不确定如何执行此操作。

r time-series xts
1个回答
0
投票

问题是xts对象也是matrix

is.matrix(x)
#[1] TRUE

根据?matrix

as.matrix是泛型函数。如果只有原子列和任何非(数字/逻辑/复杂)列,则数据帧方法将返回一个字符矩阵,将as.vector应用于因子,将格式应用于其他非字符列。否则,将使用通常的强制等级(逻辑

matrix只能容纳一个类。如果只有一个character元素,它将把整个数据集更改为character

© www.soinside.com 2019 - 2024. All rights reserved.