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

R语言依据关键词列表创建0/1标记变量并匹配字符串的技术问询

R 自定义关键词批量标记人工备注字段实现方案

核心适配所有需求:仅修改关键词列表即可重新运行、大小写不敏感、无需分隔符的子串匹配、支持关键词末尾漏写字符的模糊匹配,无需拆分备注词汇生成多余变量。

完整实现代码(tidyverse 版本,可读性更高)

# 加载依赖包
library(dplyr)
library(purrr)

# -------------------------- 仅需修改以下配置项即可重新运行 --------------------------
# 自定义需要匹配的关键词列表
target_keywords <- c("abc", "xyz", "flights")
# 允许关键词末尾最多漏写的字符数,不需要模糊匹配后缀时设为0
allowed_missing_suffix_len <- 1 
# --------------------------------------------------------------------------------

# 自动生成每个关键词的匹配规则
match_rules <- map_chr(target_keywords, function(key) {
  substr(key, 1, nchar(key) - allowed_missing_suffix_len)
})

# 批量生成标记列
result_df <- df %>%
  bind_cols(
    map_dfc(set_names(match_rules, target_keywords), function(pattern) {
      as.integer(grepl(pattern, Notes, ignore.case = TRUE))
    })
  )

基础R版本(无需安装第三方包)

# -------------------------- 仅需修改以下配置项即可重新运行 --------------------------
target_keywords <- c("abc", "xyz", "flights")
allowed_missing_suffix_len <- 1
# --------------------------------------------------------------------------------

match_rules <- sapply(target_keywords, function(key) {
  substr(key, 1, nchar(key) - allowed_missing_suffix_len)
})

result_df <- df
for (i in seq_along(target_keywords)) {
  result_df[[target_keywords[i]]] <- as.integer(
    grepl(match_rules[i], result_df$Notes, ignore.case = TRUE)
  )
}

匹配逻辑说明

  • 子串匹配:无需备注中的关键词前后有空格等分隔符,只要包含对应字符片段即可命中,适配ABCschedule这类无分隔符的录入场景
  • 大小写不敏感:通过grepl的ignore.case = TRUE实现,ABC、abc、Abc都会命中关键词abc
  • 后缀模糊匹配:通过截取关键词前面的固定长度字符匹配,比如关键词flights配置允许漏写1个末尾字符时,flights、flight都会命中
  • 关键词迭代:新增、删除、修改关键词仅需调整target_keywords列表,其余代码无需改动
  • 输出的标记列为1表示命中对应关键词,0表示未命中,完全符合给定的期望输出格式

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

相关产品推荐
方舟 Agent Plan

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

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