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

R语言如何匹配指定关键词向量为data.frame新增标识列

R 实现数据框关键词匹配打标的方案

你可以直接通过R内置的正则匹配函数实现需求,不需要依赖第三方包,以下是可直接运行的实现代码:

方法1:推荐写法(大小写不敏感匹配,维护成本低)

不需要手动枚举关键词的所有大小写形式,直接开启正则的大小写忽略参数即可,后续新增关键词也只需要补充核心词:

# 加载示例数据
df <- structure(list(Name = c("Mark", "Joseph", "Lucas"), 
                     Achievement = c("Cyber Award", 
                                     "Biology Award", 
                                     "Co-author of 'New are of technology safety'")), 
                class = "data.frame", row.names = c(NA, -3L))

# 定义核心匹配关键词,仅需写小写形式
core_keywords <- c("cyber", "technology", "computer")
# 拼接为正则规则,| 代表匹配任意一个关键词
match_rule <- paste(core_keywords, collapse = "|")

# 新增标识列,匹配成功返回1,失败返回0
df$`Cyber Achievement` <- as.integer(
  grepl(match_rule, df$Achievement, ignore.case = TRUE)
)

运行后输出结果完全符合你的预期:

Name                                 Achievement Cyber Achievement
1   Mark                                 Cyber Award                 1
2 Joseph                               Biology Award                 0
3  Lucas Co-author of 'New are of technology safety'                 1

方法2:使用你预定义的全量匹配向量

如果你需要严格使用你已经写好的包含大小写变体的my_vector做匹配,只需要替换匹配规则即可,不需要开启大小写忽略参数:

# 你预定义的待匹配向量
my_vector <- c("cyber", "Cyber", "technology", "Technology", "computer", "Computer")
match_rule <- paste(my_vector, collapse = "|")
df$`Cyber Achievement` <- as.integer(grepl(match_rule, df$Achievement))

该写法输出结果和方法1完全一致,但后续新增关键词需要手动补全所有大小写变体,维护成本更高,更推荐使用方法1。

代码说明

  • grepl()函数会逐行判断字符串是否命中匹配规则,返回逻辑值TRUE/FALSE
  • as.integer()会把逻辑值直接转为1/0,刚好匹配你需要的打标规则
  • 列名带空格的时候,引用列名需要用反引号包裹,避免语法报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:36:33