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

如何统计指定词表单词在dataframe或dfm中的出现频次

统计指定词表在DataFrame/DFM中的词频

问题说明

现有指定词表,需统计其中每个单词在含文本的DataFrame或DFM中的出现次数,相关信息如下:

词表定义

words <- dictionary(list(words = c("House", "Mountain", "Blue", "Night")))

原始DataFrame

idtitledatetext
1blablabla22.07.2023blablablabla Blue blablabla
2blablabla23.06.2023bala Blue blabla Blue blabla Blue

期望输出

idtitledatetextwordcount
1blablabla22.07.2023blablablabla Blue blablablaBlue1
2blablabla23.06.2023bala Blue blabla Blue blabla BlueBlue3

实现方案

提供两种适配不同场景的实现方式:

方式一:直接处理DataFrame(依赖dplyr+stringr)

library(dplyr)
library(stringr)

# 提取词表中的目标单词
target_words <- c("House", "Mountain", "Blue", "Night")

# 逐行统计词频并整理格式
result_df <- original_df %>%
  rowwise() %>%
  mutate(
    word = list(target_words),
    count = str_count(text, fixed(unlist(word)))
  ) %>%
  unnest(c(word, count)) %>%
  filter(count > 0) # 过滤未出现的单词

方式二:通过DFM处理(依赖quanteda包)

library(quanteda)
library(dplyr)
library(tidyr)

# 基于文本创建DFM并匹配词表
dfm_obj <- dfm(original_df$text, dictionary = words)

# 将DFM转换为长格式数据框
dfm_stats <- convert(dfm_obj, to = "data.frame") %>%
  mutate(id = original_df$id) %>%
  pivot_longer(cols = -id, names_to = "word", values_to = "count") %>%
  filter(count > 0)

# 合并原始数据与统计结果
result_df <- original_df %>%
  left_join(dfm_stats, by = "id") %>%
  select(id, title, date, text, word, count)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:32:14