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

R语言多关键词匹配时高效生成合并标签列的方法问询

批量检测关键词并生成标签列的简便方法

不用手动写大量mutate和if语句,直接用批量处理的方式搞定,两种方案任你选:

方案一:用dplyr的across批量生成检测列后拼接

library(dplyr)
library(stringr)

# 原始数据
df <- data.frame(
  text = c("the discrepency between the two items are great", 
           "there is discrepency between the calib",
           "no keywords here"),
  actual_tag = c('discrepency','discrepency, calib', '')
)

# 把你的20个关键词都放进这个向量里
keywords <- c("discrepency", "calib", "items", "great")

df_result <- df %>%
  # 批量生成每个关键词的检测列(TRUE/FALSE)
  mutate(across(all_of(keywords), ~str_detect(text, .x))) %>%
  # 按行处理,提取匹配的关键词并拼接
  rowwise() %>%
  mutate(actual_tag = paste(names(.)[which(c_across(all_of(keywords)))], collapse = ", ")) %>%
  # 删掉临时生成的检测列
  select(-all_of(keywords))

print(df_result)

方案二:用purrr直接遍历文本匹配关键词(更简洁)

不用生成中间列,一步到位:

library(dplyr)
library(stringr)
library(purrr)

# 同样先定义关键词向量
keywords <- c("discrepency", "calib", "items", "great")

df_result <- df %>%
  mutate(actual_tag = map_chr(text, ~{
    # 找出当前文本匹配的所有关键词
    matched_keys <- keywords[str_detect(.x, keywords)]
    # 用逗号拼接成字符串,无匹配则为空
    paste(matched_keys, collapse = ", ")
  }))

print(df_result)

关键说明

  • 把keywords向量替换成你实际的20个关键词就行,不用改其他代码
  • 两种方法都能自动处理“0个到全部关键词匹配”的情况,无匹配时actual_tag会是空字符串
  • 方案二更高效,尤其是关键词数量多的时候,不会生成一堆临时列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:45:32