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

在R中为DataFrame添加关键词出现次数统计列的最佳实践

批量为DataFrame添加关键词出现次数列(Base R与dplyr实现)

现有一个包含DESCRIPTION字段的DataFrame df,以及存储关键词的向量keywords,需要完成以下操作:

  • 为每个关键词在df中创建对应命名的列
  • 在新列中存储该关键词在对应行DESCRIPTION字段中的出现次数
    要求方案支持大量关键词扩展,以下是示例数据和实现方案:

示例数据

# 示例DataFrame
(df <- data.frame(
  ID = letters[1:10],
  DESCRIPTION = c("blue", "red", "this was green", "this was red", "blue and red", "green", NA, "green", "green, blue, and red", NA)
))

# 关键词向量
keywords <- c("blue", "red", "green")

Base R 实现

纯Base R方案无需额外依赖包,通过遍历关键词结合正则匹配统计出现次数,同时处理NA值避免统计错误:

# 将NA值替换为空字符串,防止统计出错
df$DESCRIPTION <- ifelse(is.na(df$DESCRIPTION), "", df$DESCRIPTION)

# 遍历每个关键词,生成对应计数列
for (word in keywords) {
  # 使用gregexpr匹配关键词位置,统计匹配成功的次数
  df[[word]] <- sapply(gregexpr(word, df$DESCRIPTION), function(x) sum(x > 0))
}

dplyr 实现

借助dplyr的批量操作函数across,结合stringr的str_count可以更简洁地完成需求,代码可读性更高:

library(dplyr)
library(stringr)

df <- df %>%
  # 对每个关键词生成计数列,用coalesce处理NA值
  mutate(across(all_of(keywords), ~str_count(coalesce(DESCRIPTION, ""), .x)))

最终输出示例

执行上述代码后,得到的DataFrame如下:

ID          DESCRIPTION blue red green
1   a                 blue    1   0     0
2   b                  red    0   1     0
3   c       this was green    0   0     1
4   d         this was red    0   1     0
5   e         blue and red    1   1     0
6   f                green    0   0     1
7   g                        0   0     0
8   h                green    0   0     1
9   i green, blue, and red    1   1     1
10  j                        0   0     0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 19:03:23