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

如何在R语言中按单词分组汇总文本出现情况及对应频率

R语言按单词分组展示文本出现情况及对应频率

以下提供三种常用实现方式,可根据使用习惯选择:

方法1:Base R 原生实现

无需额外安装包,直接用原生函数完成分组输出:

# 定义示例数据
df <- data.frame(
  word=c("a", "b", "c", "e", "g", "a", "c", "f", "b", "d", "e", "c", "a", "h", "i"),
  text=c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5),
  freq=c(10,3,5,8,2,6,7,4,9,11,18,2,1,5,6)
)

# 按单词分组并格式化输出
by(df, df$word, function(x) {
  cat(sprintf('单词"%s"出现在文本%s,对应频率为%s\n', 
              x$word[1], 
              paste(x$text, collapse = "、"), 
              paste(x$freq, collapse = "、")))
})

输出结果:

单词"a"出现在文本1、2、5,对应频率为10、6、1
单词"b"出现在文本1、3,对应频率为3、9
单词"c"出现在文本1、3、4,对应频率为5、7、2
单词"d"出现在文本4,对应频率为11
单词"e"出现在文本2、4,对应频率为8、18
单词"f"出现在文本3,对应频率为4
单词"g"出现在文本2,对应频率为2
单词"h"出现在文本5,对应频率为5
单词"i"出现在文本5,对应频率为6

方法2:dplyr 包实现

适合习惯tidyverse语法的用户,代码可读性更强:

# 首次使用需安装dplyr包
# install.packages("dplyr")
library(dplyr)

# 分组汇总并生成输出文本
result_df <- df %>%
  group_by(word) %>%
  summarise(
    text_list = paste(text, collapse = "、"),
    freq_list = paste(freq, collapse = "、"),
    .groups = "drop"
  ) %>%
  mutate(output = sprintf('单词"%s"出现在文本%s,对应频率为%s', word, text_list, freq_list))

# 打印结果
cat(paste(result_df$output, collapse = "\n"))

运行后输出与Base R方法完全一致。

方法3:data.table 包实现

针对大数据量场景,运行效率优于原生方法和dplyr:

# 首次使用需安装data.table包
# install.packages("data.table")
library(data.table)

# 转换为data.table格式
dt <- as.data.table(df)

# 分组汇总并格式化输出
dt[, .(
  text_list = paste(text, collapse = "、"),
  freq_list = paste(freq, collapse = "、")
), by = word][, cat(sprintf('单词"%s"出现在文本%s,对应频率为%s\n', word, text_list, freq_list))]

同样会输出符合要求的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:43:34