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

R语言多模式匹配实现文件名与标准化股票代码关联

R语言实现文件名批量匹配标准化供应商代码

前置准备

先安装加载tidyverse套件,包含数据处理和字符串匹配所需的常用工具:

install.packages("tidyverse") # 仅第一次运行需要安装
library(tidyverse)

步骤1:构建结构化匹配规则表

不要把每个供应商的匹配模式单独存为变量,统一整理成对照表方便后续维护,30个供应商每个3种模式只需填入90行即可:

match_rule <- tibble(
  # 所有待匹配的关键词模式
  pattern = c("APPL", "Apple", "MSFT", "Microsoft"),
  # 模式对应的标准化代码
  standard_ticker = c("APPL", "APPL", "MSFT", "MSFT")
)

如果有匹配优先级需求,可将优先级更高的模式放在表的靠前位置。

步骤2:构造待处理数据集

修正示例数据的语法问题,实际使用时替换为你自己的数据集即可:

financial_reports <- tibble(
  financial_report_names = c("AppleFinance.csv", "APPLStock.csv", "financesMICROSOFT.csv", "MSFTstocks.csv", "UberStocks.csv"),
  report_month = c("202101", "202101", "202102", "202102", "202102")
)

步骤3:执行批量匹配

result <- financial_reports %>%
  # 忽略大小写匹配文件名和规则表中的模式
  left_join(
    match_rule,
    join_by(str_detect(financial_report_names, regex(pattern, ignore_case = TRUE)))
  ) %>%
  # 对每个文件去重,取优先级最高的匹配结果
  group_by(financial_report_names, report_month) %>%
  summarise(
    matching_ticker = first(standard_ticker),
    .groups = "drop"
  ) %>%
  # 无匹配结果替换为字符串"N/A",不需要可以删掉这行
  mutate(matching_ticker = replace_na(matching_ticker, "N/A"))

输出结果验证

运行print(result)即可得到和预期完全一致的输出:

financial_report_namesreport_monthmatching_ticker
AppleFinance.csv202101APPL
APPLStock.csv202101APPL
financesMICROSOFT.csv202102MSFT
MSFTstocks.csv202102MSFT
UberStocks.csv202102N/A

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:57:01