【发布时间】:2019-09-19 09:50:30
【问题描述】:
我正在使用从不同提供商处获得的时间序列数据。这导致向量的长度不匹配。
例如:
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”-objects。
此设置的主要问题是 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 向量添加到我的池变量中,它只包含“NA”值,并且“complete.cases”会删除数据集的每一行。
如果我看一下它自己的 xts_sentiment 变量(见上文),它包含正确的值。
我也尝试在“merge”命令中设置“as.character(xts_sentiment)”或“as.string(xts_sentiment)”,但没有帮助。
有谁知道如何将 xts_sentiment 的值放入“池”变量中?
顺便说一句:我也试过 data.table,它显示 xts_sentiment 及其所有值,但我没有“唯一”日期的好处。
非常感谢您的帮助!
【问题讨论】:
-
你能提供一个可重现的例子吗?