我正在使用从不同提供商获得的时间序列数据。这导致向量的长度不匹配的事实。
例如:
nrow(xts_ret) #2176
nrow(xts_trade) #2177
nrow(xts_trans) #2192
nrow(xts_vola_ret) #2177
我还有一个仅包含因素的时间序列:
> head(xts_sentiment)
[,1]
2019-04-29 "neutral"
2019-04-29 "negative"
2019-04-29 "neutral"
2019-04-29 "neutral"
2019-04-29 "neutral"
2019-04-29 "neutral"
注意:以上所有矢量都被格式化为“ xts”对象。
此设置的主要问题是xts_ret,xts_trade,xts_trans,xts_vola_ret和xts_sentiment的日期因变量而异。
我正在使用R版本3.5.1(2018-07-02)。
我发现xts的“合并”命令完全符合我的需求
data_pool <- merge(xts_ret, xts_trade, xts_trans, xts_vola_ret)
如果缺少一个日期(或值),则将其在相应向量中的条目替换为“ NA”,但在具有相应日期的行中列出该条目。
> head(data_pool)
xts_ret xts_trade xts_trans xts_vola_ret
2013-04-28 NA NA 40986 NA
2013-04-29 0.04805079 0 50009 0.00000000
2013-04-30 -0.04805079 0 48795 -0.04516775
2013-05-01 -0.14532060 0 50437 -0.13931143
2013-05-02 -0.12327888 0 57278 -0.12424083
2013-05-03 -0.12792566 0 55859 -0.12770457
“ complete.case”功能使我可以踢出所有带有“ NA”条目的行,以便所有向量具有相同的长度。
问题:
如果我将xts_sentiment矢量添加到我的pool变量中,则它仅包含“ NA”值,而“ complete.cases”将删除数据集的每一行。
如果我看一下xts_sentiment变量本身(见上文),它包含正确的值。
我还尝试在“合并”命令中设置“ as.character(xts_sentiment)”或“ as.string(xts_sentiment)”,但这无济于事。
有人知道如何将xts_sentiment的值放入“ pool”变量中吗?
顺便说一句:我还尝试了data.table,它显示了xts_sentiment及其所有值,但是我没有“唯一”日期的好处。
非常感谢您的帮助!
答案 0 :(得分:0)
我的问题的解决方法是:
变量xts_sentiment由字符组成。
XTS函数用作矩阵,这意味着每个向量都需要相同的内容(例如,所有向量仅包含字符或所有向量仅包含数字)。
因此,不可能从字符向量和带数字的向量中创建xts元素。
我的解决方案是将情感水平解码为数字,然后使用“ merge.xts”命令。可行。