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

R tidyverse中如何基于关键词匹配为数据框字符列分配对应类别?

实现方案

tidyverse生态可通过dplyr+stringr的组合实现该需求,核心逻辑是从描述列提取匹配的关键词,再关联映射表匹配类别标签,具体实现如下:

步骤1:加载依赖包与构造示例数据

library(tidyverse)

# 构造关键词-类别映射表
lookup_df <- tibble(
  Keyword = c("dog", "cat", "tiger", "cheetah", "man"),
  Category = c("walk", "house", "jungle", "fast", "office")
)

# 构造待处理的描述数据框
desc_df <- tibble(
  description = c("dog is barking", "cat is purring","tiger is hunting", 
                  "cheetah is running", "man is working")
)

步骤2:类别匹配的两种实现方案

方案1:关键词数量少时直接手写匹配规则

适合关键词数量少、规则灵活调整的场景,直接用case_when匹配:

result1 <- desc_df %>%
  mutate(
    category = case_when(
      str_detect(description, "dog") ~ "walk",
      str_detect(description, "cat") ~ "house",
      str_detect(description, "tiger") ~ "jungle",
      str_detect(description, "cheetah") ~ "fast",
      str_detect(description, "man") ~ "office",
      .default = NA_character_
    )
  )

方案2:关键词数量多时自动关联映射表

无需手动逐行写匹配规则,自动复用映射表的匹配逻辑,适合关键词量大的场景:

result2 <- desc_df %>%
  # 提取描述列中命中的关键词
  mutate(
    matched_keyword = str_extract(description, paste(lookup_df$Keyword, collapse = "|"))
  ) %>%
  # 关联映射表获取对应类别
  left_join(lookup_df, by = c("matched_keyword" = "Keyword")) %>%
  # 不需要保留匹配关键词可取消注释下行删除
  # select(-matched_keyword)

补充说明:如果单条描述可能命中多个关键词,可将str_extract替换为str_extract_all提取所有命中项,再按需处理多匹配场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:15:03