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

R语言如何使用键值对dataframe替换并提取原dataframe列匹配值

R语言模糊匹配替换数据框内容实现方案

原有代码问题

  • grepl参数使用错误,collapse参数属于paste类函数,需要先将所有匹配关键词拼接为正则字符串再传入grepl的pattern参数
  • 直接用原old列做关联无法匹配,需要先从待处理列中提取出和键值对中old列完全匹配的关键词作为关联键

完整实现代码

library(tidyverse)

# 构造示例数据
df <- data.frame(old = c("412oldname1","32oldname132","oldname141","132oldname2","oldname3","oldname4","oldname5"))
keypairs <- data.frame(old = c("oldname1","oldname2"), new = c("newname1","newname2"))

# 核心处理逻辑
df %>%
  # 筛选包含目标关键词的行,也可替换为base R写法:filter(grepl(paste(keypairs$old, collapse = "|"), old))
  filter(str_detect(old, paste(keypairs$old, collapse = "|"))) %>%
  # 提取匹配到的关键词作为关联键
  mutate(match_key = str_extract(old, paste(keypairs$old, collapse = "|"))) %>%
  # 关联键值对完成替换
  left_join(keypairs, by = c("match_key" = "old")) %>%
  # 输出符合要求的结果
  select(old = new)

输出结果

运行上述代码后得到的输出和预期完全一致:

old
1 newname1
2 newname1
3 newname1
4 newname2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:45:03