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

如何在R中统计文本文件中指定全名的出现次数并生成统计表格

统计姓名在文本中的出现次数(R语言实现)

步骤1:加载所需工具包

我们需要stringr处理字符串匹配,dplyr整理结果表格(也可使用基础R替代):

# 未安装的话先执行安装命令
# install.packages(c("stringr", "dplyr"))
library(stringr)
library(dplyr)

步骤2:读取文本文件

针对大型文本,用read_file()一次性将整个文件读为单个字符串,效率更优:

# 替换为你的文本文件路径
my_text <- read_file("my_textfile.txt")

步骤3:定义姓名列表

将220个全名整理成字符向量:

name_list <- c("David Smith", "Rachel Miller", "Carl Bekker", "Tiffany Bone", "Mike Miller")

步骤4:批量统计出现次数

通过sapply()遍历姓名列表,结合带单词边界的正则实现精确匹配,避免部分匹配误统计:

# 统计每个姓名的出现次数
mention_counts <- sapply(name_list, function(name) {
  str_count(my_text, regex(paste0("\\b", name, "\\b"), ignore_case = FALSE))
})

# 转换为结果表格
result_table <- data.frame(
  Name = names(mention_counts),
  Mentions = as.numeric(mention_counts),
  stringsAsFactors = FALSE
)

示例测试

用你提供的示例文本验证效果:

# 示例文本内容
sample_text <- "Hi my name is David Smith and I know Rachel Miller but I have no clue who Tiffany Bone is. Yet, I know someone called Rachel Bone. I also know that Rachel Miller knows both someone called Carl Bekker and Tiffany Bone. David Smith as a name is not very creative; but who cares? Maybe you, Rachel Miller?"

# 执行统计
test_counts <- sapply(name_list, function(name) {
  str_count(sample_text, regex(paste0("\\b", name, "\\b")))
})

test_table <- data.frame(
  Name = names(test_counts),
  Mentions = as.numeric(test_counts),
  stringsAsFactors = FALSE
)

print(test_table)

运行后输出:

Name Mentions
1  David Smith        2
2 Rachel Miller        3
3  Carl Bekker        1
4 Tiffany Bone        2
5   Mike Miller        0

关键说明

  • 正则中的\\b是单词边界,确保只匹配完整的全名,不会把"Rachel Bone"误判为"Rachel Miller"的一部分
  • 若需要忽略大小写匹配,将ignore_case = FALSE改为TRUE即可
  • 针对220个姓名的遍历统计,即使是超大型文本也能高效完成,因为str_count是向量化操作,开销极低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:17:03