使用dataframe合并或cbind xts对象

问题描述 投票:1回答:1

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

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对象实际上没有日期,而是带有日期的索引。我很感激任何建议。

r merge xts zoo
1个回答
2
投票

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

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

而在DatedfDate类型。

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
© www.soinside.com 2019 - 2024. All rights reserved.