(我是 R 新手)我有两个不同长度的时间序列,一个从 2011 年 1 月 (ts1) 开始,另一个从 2016 年 1 月 (ts2) 开始。如何用 NA 值填充 ts2 中的时间间隔“ts1 - ts2”(从 2011 年 1 月到 2015 年 12 月)以使其与 ts1“对齐”?
欢迎使用 StackOverflow!将来,请提供您的数据示例,以便我们在提供答案之前测试代码。在这种情况下,任何具有不同开始日期的时间序列对象就足够了。我不得不找到我自己的数据来回答你的问题。
首先,我使用quantmod
包将股票价格数据加载到 R 中。这将返回属于 class 的对象xts
,这在这种情况下很方便。我已经加载了AAPL
,从 2011 年GOOG
开始,从 2016 年开始。现在要实现你想要的,最简单的方法是xts
从 2011 年到 2016 年创建一个新对象并用 NA 填充它。然后简单地将较短的时间序列对象与这个具有 NA 的新时间序列对象结合起来,在这种情况下GOOG
。
library(quantmod)
getSymbols('AAPL', from = "2011-01-01", to = "2019-09-30")
getSymbols("GOOG", from = '2016-01-01', to = "2019-09-30")
new_rows <- nrow(AAPL) - nrow(GOOG)
temp <- matrix(NA, nrow = new_rows, ncol = ncol(GOOG))
temp <- xts(temp, order.by = index(AAPL[1:new_rows,,drop=F]))
column_names <- colnames(GOOG)
GOOG <- rbind(temp, GOOG)
colnames(GOOG) <- column_names
nrow(AAPL)==nrow(GOOG)
[1] TRUE
现在GOOG
的开始日期AAPL
与 2011 年至 2015 年 12 月的 NA相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句