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

如何在R语言中基于字典匹配提取文本关键词并生成目标数据框?

从文本列中匹配字典词汇生成标注列(R语言)

需要从数据框的pets列中匹配指定的颜色字典词汇,提取对应颜色值并生成新的color列,最终得到包含颜色标注的目标数据框。

原始数据与字典

df <- data.frame(id = c(1:5), pets = c("brown dog", "black cat", "orange cat", "black bird", "white hamster"))

dictionary <- c("black", "orange", "white", "brown", "green", "red")

解决方案

方法一:使用stringr包快速提取

stringr包的str_extract函数可以便捷地从字符串中提取第一个匹配字典的完整词汇,适合每个pets条目仅含一个颜色的场景:

library(stringr)

# 将字典转换为匹配完整单词的正则模式
color_pattern <- paste0("\\b(", paste(dictionary, collapse = "|"), ")\\b")
# 提取匹配的颜色
df$color <- str_extract(df$pets, color_pattern)

# 生成目标数据框
final_df <- df

方法二:Base R原生实现

无需额外安装包,通过grepl遍历字典匹配目标字符串:

# 遍历每个pets条目,找到匹配的颜色
df$color <- sapply(df$pets, function(text) {
  # 筛选出匹配当前文本的字典词汇
  matched_colors <- dictionary[grepl(paste0("\\b", dictionary, "\\b"), text)]
  # 返回第一个匹配结果(此处每个条目仅一个匹配)
  matched_colors[1]
})

final_df <- df

结果验证

运行上述任意一种方法后,final_df的输出如下:

> final_df
  id          pets  color
1  1     brown dog  brown
2  2      black cat  black
3  3    orange cat orange
4  4     black bird  black
5  5 white hamster  white

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:22:39