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

R语言如何判断数据框中单词是否为姓名并汇总姓名出现总次数

R语言实现高频词姓名汇总的方法

实现思路

将原始高频词数据拆分为「属于指定姓名列表」和「不属于指定姓名列表」两个子集,前者求和后生成Word值为Names的新行,后者直接保留原有内容,最后合并两个子集即可得到目标结果。

前置示例数据

先构造可复现的原始数据和姓名列表:

# 原始高频词统计数据框
word_freq <- data.frame(
  Word = c("Oliver", "Great", "Jacob", "Fantastic"),
  Times = c(3, 8, 2, 6),
  stringsAsFactors = FALSE
)
# 自定义需要汇总的姓名列表
name_list <- c("Oliver", "Jacob")

基础R实现(无需安装第三方包)

# 计算所有姓名类条目的总出现次数
name_total <- sum(word_freq$Times[word_freq$Word %in% name_list])
# 提取非姓名类的所有条目
non_name_df <- word_freq[!word_freq$Word %in% name_list, ]
# 合并汇总行和非姓名条目得到最终结果
result_df <- rbind(
  data.frame(Word = "Names", Times = name_total),
  non_name_df
)

dplyr实现(适合tidyverse生态用户)

library(dplyr)

result_df <- word_freq %>%
  # 标记条目是否属于姓名类
  mutate(is_name = Word %in% name_list) %>%
  # 分组汇总:姓名类统一求和,非姓名类保留原值
  summarise(
    Word = ifelse(is_name, "Names", Word),
    Times = sum(Times),
    .by = c(is_name, Word)
  ) %>%
  # 合并相同Word的姓名类条目
  summarise(
    Times = sum(Times),
    .by = Word
  )

输出结果

打印result_df即可得到目标格式:

Word Times
1     Names     5
2     Great     8
3 Fantastic     6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:15:03