我在这里很新,并且在这里遇到了非常奇怪的问题(正如我自己想的那样)。我有一个包含所有S& P500代号(MMM,ABT,ABBV,ACN,ATVI,AYI,ADBE ......)的专栏。然后,我执行一些代码,为每个股票代码请求xts。我不擅长创建循环,所以我这样做(第一列由代码组成):
sp500=read.csv(text=getURL("https://raw.githubusercontent.com/datasets/s-and-p-500-companies/master/data/constituents-financials.csv"), header=T)
n=nrow(sp500)
for(i in 1:n) {
j <- sp500[i,1]
getSymbols(j)
j=as.data.frame(j)
}
所以我得到了很多数据集,这些数据集的方式与之前提到的列中给出的代码相同。但问题在于,我以某种方式制作了一种聚合数据集,由每个数据集中的一个精确列组成。换句话说,我必须采用MMM$MMM.Close
并添加ABT$ABT.Close
等等。
我想,手动完成它会很长,所以我想知道,如何逐个解决这些数据集的代码(带循环),了解它&# 39;带有代码的列中的名字?
答案 0 :(得分:0)
下面是一个代码,用于下载所选代码的每日CLOSE价格(归功于@Quant Guy)。我无法打开你的文件,找不到一个免费的可靠来源(除了维基百科找到所有S&amp; P500索引组件),所以我手动输入了代码:
library(quantmod)
tickers = c( "WMT", "MMM","AIG", "AAPL", "KO",
"COST", "C", "AMZN", "ICE", "VTR")
getSymbols(tickers, from = "2010-01-01", to = "2015-12-31")
P <- NULL
seltickers <- NULL
for(ticker in tickers) {
tmp = Cl(eval(parse(text = ticker))) ## Cl from quantmod
if(is.null(P)){ timeP = time(tmp) }
if(any(time(tmp)!=timeP)) next
else P = cbind(P, as.numeric(tmp))
seltickers = c(seltickers, ticker)
}
P = xts(P, order.by = timeP)
colnames(P) = seltickers
只需修改tickers
,你就应该好了。