You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R语言Quandl批量下载印度NSE所有股票历史数据?

批量下载NSE股票历史数据解决方案

Hey Akash, 这里有个高效的方案,帮你自动处理Excel里的所有NSE股票代码,不用再手动为每只股票写重复代码啦:

步骤说明

  1. 先安装并加载所需的R包:除了Quandl,我们还需要readxl读取Excel文件,purrr做批量迭代,dplyr辅助数据处理。
  2. 读取Excel中的股票代码列表。
  3. 编写一个自定义函数,处理单只股票的下载、添加股票名称列的逻辑。
  4. 用批量迭代工具自动遍历所有股票代码,合并成最终的主数据集。
  5. 加入错误处理,避免某只股票数据获取失败导致整个流程中断。

完整代码示例

# 安装所需包(首次运行时执行)
install.packages(c("Quandl", "readxl", "purrr", "dplyr"))

# 加载包
library(Quandl)
library(readxl)
library(purrr)
library(dplyr)

# 设置Quandl API密钥
Quandl.api_key("你的API密钥")

# 读取Excel文件中的股票代码列表
# 假设Excel文件名为"nse_stocks.xlsx",股票代码列名为"Stock_Code"
stock_codes <- read_excel("nse_stocks.xlsx") %>% pull(Stock_Code)

# 定义单只股票的数据下载函数
get_stock_data <- function(code) {
  # 提取股票名称(比如从"NSE/ICICIBANK"中取出"ICICIBANK")
  stock_name <- strsplit(code, "/")[[1]][2]
  
  # 下载数据
  stock_data <- Quandl(code, collapse="daily", start_date="2018-01-01", type="raw")
  
  # 添加Stock列并填充股票名称
  stock_data %>% mutate(Stock = stock_name)
}

# 加入错误处理:如果某只股票下载失败,返回空数据框,不中断整个流程
safe_get_stock_data <- possibly(get_stock_data, otherwise = tibble())

# 批量下载并合并所有数据
Master_Data <- map_df(stock_codes, safe_get_stock_data)

# 查看结果
head(Master_Data)

关键部分解释

  • read_excel + pull:从Excel中提取出股票代码的向量,方便后续遍历。
  • 自定义函数get_stock_data:把你原来手动做的下载、加Stock列的逻辑封装起来,输入股票代码就能返回处理好的数据框。这里用strsplit自动提取股票名称,不用手动输入啦。
  • possibly函数:这是purrr包的错误处理工具,如果某只股票没有数据或者下载出错,它会返回一个空的数据框,不会让整个批量流程崩溃。
  • map_df:自动遍历所有股票代码,把每只股票的结果合并成一个大的数据框,相当于自动帮你完成了多次rbind的操作。

注意事项

  • 请确保Excel文件路径正确,如果文件在当前工作目录里,直接写文件名就行;如果不在,要写完整路径(比如"C:/data/nse_stocks.xlsx")。
  • 如果你的Excel里股票代码列的列名不是Stock_Code,记得修改pull(Stock_Code)里的列名。
  • 批量下载可能需要一些时间,取决于你股票的数量,耐心等待就好~

内容的提问来源于stack exchange,提问作者Akash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:07:12