在R中下载雅虎股票价格

use*_*290 27 finance r

这是R中的一个新手问题.我正在使用R下载雅虎财务月度股票价格数据,其中从文本文件中读取股票代码名称.我正在使用循环来读取股票代码名称以下载数据并将它们放入列表中.我的问题是一些股票代码名称可能不正确,因此我的代码在遇到这种情况时会停止.我想要以下内容.

  1. 如果不正确,请跳过自动收报机名称.
  2. 列表中的每个元素都是一个数据帧.我希望将自动收录器名称附加到元素数据帧中的变量名称.
  3. 我需要一种有效的方法来创建一个以收盘价为变量的数据框.

以下是我的问题的简化版本的示例代码.

library(tseries)  
tckk <- c("MSFT", "C", "VIA/B", "MMM") # ticker names defined  
numtk <- length(tckk);  
ustart <- "2000-12-30";
uend <- "2007-12-30" # start and end date  
all_dat <- list(); # empty list to fill in the data  
for(i in 1:numtk)  
{  
  all_dat[[i]] <- xxx <- get.hist.quote(instrument = tckk[i], start=ustart, end=uend, quote = c("Open", "High", "Low", "Close"), provider = "yahoo", compression = "m")  
}   
Run Code Online (Sandbox Code Playgroud)

代码在第三个条目处停止,但我想跳过此代码并转到"MMM".我听说过Trycatch()函数,但不知道如何使用它.

根据问题2,我希望列表的第一个元素的变量名称是"MSFTopen","MSFThigh","MSFTlow"和"MSFTclose".除了使用loop和paste()函数的组合之外,还有更好的方法吗?

最后,对于问题3,我需要一个包含三个与收盘价相对应的列的数据框.再次,我试图避免在这里循环.

谢谢.

Sha*_*ane 22

您最好的选择是使用quantmod并将结果存储为时间序列(在这种情况下,它将是xts):

library(quantmod)
library(plyr)
symbols <- c("MSFT","C","VIA/B","MMM")

#1
l_ply(symbols, function(sym) try(getSymbols(sym))) 
symbols <- symbols[symbols %in% ls()]

#2
sym.list <- llply(symbols, get) 

#3
data <- xts()
for(i in seq_along(symbols)) {
    symbol <- symbols[i]
    data <- merge(data, get(symbol)[,paste(symbol, "Close", sep=".")])
}
Run Code Online (Sandbox Code Playgroud)

  • 一个注意事项:我更喜欢`getSymbols()`中的`auto.assign = FALSE`,因为当我想要的只是合并的`data.frame`时,它避免了用所有这些符号填充环境的疯狂. (6认同)

sto*_*tic 22

这也有点晚......如果你想只使用R的基本函数来获取数据而不处理任何附加软件包,只需使用该函数read.csv(URL),其中URL是指向雅虎正确位置的字符串.数据将作为数据框引入,您需要将"日期"从字符串转换为日期类型,以便任何图表看起来都很好.简单的代码片段如下.

URL <- "http://ichart.finance.yahoo.com/table.csv?s=SPY"
dat <- read.csv(URL)
dat$Date <- as.Date(dat$Date, "%Y-%m-%d")
Run Code Online (Sandbox Code Playgroud)

使用R的基本函数可以让您更好地控制数据操作.

  • 我想这是一个品味问题. (3认同)

Jos*_*ich 9

我参加派对有点晚了,但我认为这对其他后来者非常有帮助.

stockSymbols函数TTR从nasdaq.com获取工具符号,并调整符号以与Yahoo!兼容.金融.它目前为AMEX,NYSE和纳斯达克返回约6,500个符号.您还可以查看stockSymbols调整代码中的代码以与Yahoo!兼容.财务可能会调整文件中的一些代码.

注意:由于nasdaq.com上的更改而导致CRAN stockSymbols版本TTR中断,但它在R-forge版本中已修复TTR.