在R语言中从Yahoo Finance提取股票数据时如何指定日期范围?
解决方法
你可以直接在getSymbols()函数中指定时间范围,同时优化收盘价提取和合并的步骤,以下是修改后的完整代码:
# 加载quantmod包(未安装的话先运行 install.packages("quantmod")) library(quantmod) symbols <- c("SPY", "JNK", "EEM", "EMB", "TLT", "USO") # 指定时间范围下载数据,from为起始日期,to为结束日期 getSymbols(symbols, from = "2022-09-01", to = "2022-11-13") # 提取每只证券的收盘价并合并,同时重命名列名方便识别 ClosePrices <- do.call(merge, lapply(symbols, function(x) { close_col <- Cl(get(x)) colnames(close_col) <- x return(close_col) })) # 查看结果 head(ClosePrices)
关键细节说明
getSymbols()的from和to参数直接限定了下载的时间区间,避免下载多余数据后再筛选,提升效率。- 提取收盘价时给列重命名,默认列名会是
SPY.Close这类格式,重命名后直接显示证券代码,更直观。 - 如果已经下载了全量数据,后续需要筛选时间范围,可以用
window()函数:ClosePrices_filtered <- window(ClosePrices, start = "2022-09-01", end = "2022-11-13")
内容的提问来源于stack exchange,提问作者Eduardo Páez
相关产品推荐
相关产品推荐

