我正在使用quantmod生成带有自动收报机信息的XTS对象,我希望将一堆XTS文档编译/堆叠在一起以处理代码。使用Rbind和XTS我发现它不会将XTS堆叠在一起,而是按日期合并和排序:
x <- xts(1:10, Sys.Date()+1:10)
x
[,1]
2014-07-10 1
2014-07-11 2
2014-07-12 3
2014-07-13 4
2014-07-14 5
2014-07-15 6
2014-07-16 7
2014-07-17 8
2014-07-18 9
2014-07-19 10
y <- xts(rep(2,3), Sys.Date()+c(1,2,3))
y
[,1]
2014-07-10 2
2014-07-11 2
2014-07-12 2
rbind(x,y)
[,1]
2014-07-10 1
2014-07-10 2
2014-07-11 2
2014-07-11 2
2014-07-12 3
2014-07-12 2
2014-07-13 4
2014-07-14 5
2014-07-15 6
2014-07-16 7
2014-07-17 8
2014-07-18 9
2014-07-19 10
警告讯息: 在rbind(deparse.level,...)中: 不匹配的类型:将对象转换为数字
问题1 - 为什么会出现警告信息?
问题2 - 如何正确堆叠XTS,可能是一个新手问题,但需要绑定看起来像这样:
2014-07-10 1
2014-07-11 2
2014-07-12 3
2014-07-13 4
2014-07-14 5
2014-07-15 6
2014-07-16 7
2014-07-17 8
2014-07-18 9
2014-07-19 10
2014-07-10 2
2014-07-11 2
2014-07-12 2
答案 0 :(得分:1)
1)x
是整数; y
是数字。 xts对象是具有有序索引属性的矩阵。您无法在矩阵中混合类型,因此x
会转换为数字。
2)你不能。 xts是一个时间序列类。如果xts允许您的数据不按时间排序,那将是非常糟糕和令人困惑的。
答案 1 :(得分:0)
xts
是从zoo
派生的时间序列对象。它只是一个按时间索引的矩阵对象。在两个rbind
对象之间使用xts
将按时间对它们进行排序。
如果要将它们堆叠在另一个之上,则只能使用它们的coredata
对象matrix
。
datax = coredata(x)
datay = coredata(y)
rbinding = rbind(datax, datay)
您将丢失时间信息。我不知道你这里的海豚是什么,但这应该可以解决问题。
如果您想“保留” xts对象的信息,则可以使用merge来代替数据,它会在要使用的行情自动收录器中创建一列,但数据的位置正确。 / p>
merge(x, y, join = "outer", fill = NA)