我有一个包含月度时间序列(各种财务和经济变量)的数据框,如下所示:
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个月)。
我尝试过合并(df,y2,by ='Date')但是y2对象实际上没有日期,而是带有日期的索引。我很感谢任何建议。
答案 0 :(得分:2)
将y2
转换为data.frame(或将df转换为xts对象),其时间序列结构与df
相同。请注意,原始时间序列结构是不同的:
> class(index(y2))
[1] "yearmon"
Date
中的df
属于Date
类型。
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