2017-06-01 2 views
0

Ich bin ziemlich neu hier und stecken mit ziemlich eigenartigen Problem hier (wie ich denke für mich). Ich habe eine Spalte mit allen SP500 Ticker (MMM, ABT, ABBV, ACN, ATVI, AYI, ADBE ....). Dann führe ich einen Code aus und fordere Xts für jeden Ticker an. Ich bin nicht gut in Schleifen zu schaffen, so dass ich auch in einer solchen Art und Weise (erste Säule besteht aus tickers):Download Schließen Preise von S & P500 Komponenten

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)  
} 

Also ich viele Datensätze erhalten, genannt die gleiche Art und Weise, wie die Tickern in Spalte , das wurde vorher erwähnt. Aber das Problem besteht darin, dass ich irgendwie eine Art aggregierten Datensatz erstellen muss, der aus genau einer Spalte von jedem Datensatz besteht. Mit anderen Worten, ich muss MMM$MMM.Close nehmen und ABT$ABT.Close und so weiter hinzufügen.

Ich nehme an, dass es lange dauern würde, es manuell zu tun, also würde ich gerne herausfinden, wie es möglich ist, Code zu diesen Datensätzen einzeln zu adressieren (mit Schleife), wissend, dass es Namen von die Spalte mit Tickern?

+0

nicht sicher, was du meinst. – AidanGawronski

Antwort

0

Hier ist ein Code, der täglich CLOSE-Preise für die ausgewählten Ticker (Kredit an @ Quant Guy) herunterlädt. Ich konnte nicht die Dateien öffnen und kann nicht eine freie zuverlässige Quelle (abgesehen von wikipedia finden alle S & P500 Indexkomponenten), so dass ich manuell eingegeben die Tickern finden:

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 

einfach modifizieren, um die tickers und Du solltest gut sein.

Verwandte Themen