使用数据框合并或绑定 xts 对象

Merge or cbind xts object with dataframe

我有一个包含每月时间序列(各种金融和经济变量)的数据框,如下所示:

var1 <- c('1','2','3')
var2 <- c('1','2','3')
Date <- as.Date(c('1995-11-1','1995-12-1','1996-1-1'))
df <- data.frame(Date, var1, var2)

我想添加一些我从 FRED 下载的更多变量,如下所示:

library('quantmod')
y<-getSymbols('T10Y2Y',src='FRED', auto.assign=FALSE)
y2<-to.monthly(y)

y 是一个 "xts" "zoo" 对象。现在,y2 的长度与我现有的数据帧不同。将 y2 合并或绑定到数据帧的最简单方法是什么,同时只保留数据帧中的日期数(在上面的 MinExample 中,只保留那 3 个月)。

我试过 merge(df, y2, by='Date') 但是 y2 对象并没有真正的日期,而是一个带有日期的索引。感谢您的任何建议。

y2转换为data.frame(或将df转换为xts对象),具有与df中相同的时间序列结构。注意原来的时间序列结构不同:

> class(index(y2))
[1] "yearmon"

df 中的 DateDate 类型。

y2df <- data.frame(Date = as.Date(index(y2)), 
                   coredata(y2))

df <- merge(df, y2df, by = "Date")

#> df
#        Date var1 var2 y.Open y.High y.Low y.Close
#1 1995-11-01    1    1   0.46   0.50  0.40    0.40
#2 1995-12-01    2    2   0.39   0.45  0.33    0.40
#3 1996-01-01    3    3   0.42   0.67  0.41    0.67