【问题标题】:How to shorten multiple timeseries with different dates?如何缩短具有不同日期的多个时间序列?
【发布时间】: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 及其所有值,但我没有“唯一”日期的好处。

非常感谢您的帮助!

【问题讨论】:

  • 你能提供一个可重现的例子吗?

标签: r date merge xts


【解决方案1】:

我的问题的解决方案是:

变量 xts_sentiment 由字符组成。

XTS 函数作为矩阵工作,这意味着每个向量都需要相同的内容(例如,所有向量仅包含字符或所有向量仅包含数字)。

因此,不可能从字符向量和带数字的向量中创建 xts 元素。

我的解决方案是将情绪级别解码为数字并使用“merge.xts”命令。那行得通。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 2020-01-25
    • 1970-01-01
    • 2020-07-02
    • 2023-03-11
    • 2021-11-28
    • 2021-03-29
    相关资源
    最近更新 更多