merge.xts 在 for 循环的特定列上
merge.xts on specific columns over a for loop
我下载了很多股票数据,需要与相关指数进行比较。为此,我需要在开始计算日志 returns 之前合并时间序列数据(仅调整收盘价列)。
我已尝试使用 for 循环按以下方式执行此操作:请注意,我已将所有数据下载到单独的环境中,因为它包含许多股票代码的大量数据。
require(quantmod)
e<-new.env()
tickers<-c("GE","BMW.DE","NOVO-B.CO","1COV.DE")
getSymbols("^GSPC",from="2018-01-01")
getSymbols(tickers,from="2019-01-01",env=e)
现在我想获取环境 e 中每个元素的第 6 列(调整后的收盘价)并将 merge.xts(join="inner") 应用于该列以将其与调整后的收盘价结合起来GSPC 的价格。我选择 join="inner" 以确保我只有具有匹配 xts 日期的观测值。
for(ticker in tickers){
x<-get(ticker,envir=e)[,6]
merged_prices<-merge.xts(x,GSPC[,6])
}
当我尝试这样做时出现错误,我也尝试在 运行 for 循环之前创建一个数据框,但我无法让它工作。
提前致谢。
使用环境,您走在正确的轨道上。干得好!
您想从每个交易品种中提取调整后的收盘列并将它们合并到一个 xts 对象中。您的 for
循环走在正确的轨道上,但还有更简单的方法。您可以使用 lapply()
遍历环境中的元素,并使用 Ad()
函数提取调整后的关闭列。然后使用 do.call(merge, ...)
在 lapply()
.
的输出上调用 merge
函数
merged_prices <- do.call(merge, lapply(e, Ad))
此时您可以合并调整后的 GSPC 收盘价 (merge(Ad(GSPC), merged_prices)
),或者您可以将其包含在代码列表中。
我下载了很多股票数据,需要与相关指数进行比较。为此,我需要在开始计算日志 returns 之前合并时间序列数据(仅调整收盘价列)。
我已尝试使用 for 循环按以下方式执行此操作:请注意,我已将所有数据下载到单独的环境中,因为它包含许多股票代码的大量数据。
require(quantmod)
e<-new.env()
tickers<-c("GE","BMW.DE","NOVO-B.CO","1COV.DE")
getSymbols("^GSPC",from="2018-01-01")
getSymbols(tickers,from="2019-01-01",env=e)
现在我想获取环境 e 中每个元素的第 6 列(调整后的收盘价)并将 merge.xts(join="inner") 应用于该列以将其与调整后的收盘价结合起来GSPC 的价格。我选择 join="inner" 以确保我只有具有匹配 xts 日期的观测值。
for(ticker in tickers){
x<-get(ticker,envir=e)[,6]
merged_prices<-merge.xts(x,GSPC[,6])
}
当我尝试这样做时出现错误,我也尝试在 运行 for 循环之前创建一个数据框,但我无法让它工作。
提前致谢。
使用环境,您走在正确的轨道上。干得好!
您想从每个交易品种中提取调整后的收盘列并将它们合并到一个 xts 对象中。您的 for
循环走在正确的轨道上,但还有更简单的方法。您可以使用 lapply()
遍历环境中的元素,并使用 Ad()
函数提取调整后的关闭列。然后使用 do.call(merge, ...)
在 lapply()
.
merge
函数
merged_prices <- do.call(merge, lapply(e, Ad))
此时您可以合并调整后的 GSPC 收盘价 (merge(Ad(GSPC), merged_prices)
),或者您可以将其包含在代码列表中。