R语言中统计数据集jnl.dt标题词数分布的非硬编码实现方法
R语言统计标题单词数分布的无硬编码实现
方案1:tidyverse 简洁实现(推荐)
无需提前定义任何单词数阈值,自动统计所有单词数对应的标题数量:
library(tidyverse) # 输出统计结果:第一列为单词数,第二列为对应单词数的标题总数 jnl.dt %>% mutate(word_count = str_count(`Full Title`, "\\w+")) %>% count(word_count, name = "title_count")
如果需要将结果转为可直接索引的命名向量,可追加deframe():
word_count_dist <- jnl.dt %>% mutate(word_count = str_count(`Full Title`, "\\w+")) %>% count(word_count, name = "title_count") %>% deframe() # 示例:查询3个单词的标题数量 word_count_dist[as.character(3)]
方案2:基础R实现(无需额外安装包)
# 计算每个标题的单词数 word_counts <- lengths(gregexpr("\\w+", jnl.dt$`Full Title`)) # 处理空标题的特殊情况(无匹配时gregexpr返回-1,可将对应单词数设为0) word_counts[word_counts == -1] <- 0 # 生成分布统计结果 word_count_dist <- table(word_counts)
两种方案都会自动覆盖所有出现过的单词数区间,完全不需要手动为1、2、3...单词的情况单独定义变量写判断逻辑。如果你的单词判定规则有调整(比如需要把带连字符的词组算单个单词、排除纯数字字符串等),仅需修改正则表达式部分即可,统计逻辑无需变动。
内容的提问来源于stack exchange,提问作者user14436230
相关产品推荐
相关产品推荐

