R语言如何编写循环批量统计不同数据表指定列的词频
R语言多表批量词频统计实现方案
实现逻辑
- 将所有待处理数据表归集为列表,避免逐个调用
- 把单表处理逻辑封装为可复用的自定义函数
- 用purrr包的批量映射能力一次性处理所有表
具体代码
首先加载依赖包:
library(dplyr) library(tidytext) library(purrr)
步骤1:批量归集数据表
如果你的15张表命名符合Table1到Table15的规律,可以直接从全局环境批量抓取:
# 匹配所有命名为Table加数字的表,存入列表 table_list <- mget(ls(pattern = "^Table\\d+$"))
如果表名没有规律,也可以手动构造列表:
table_list <- list(表1名 = 表1对象, 表2名 = 表2对象, ..., 表15名 = 表15对象)
步骤2:封装单表处理函数
把你原来的单表处理逻辑封装成函数:
count_word_freq <- function(input_df) { input_df %>% unnest_tokens(word, text) %>% anti_join(stop_words, by = "word") %>% count(word, sort = TRUE) }
步骤3:批量执行处理
执行以下代码即可得到所有表的词频统计结果:
# 返回结果为列表,每个元素对应一张原表的词频统计结果 all_freq_result <- map(table_list, count_word_freq)
结果使用说明
- 要提取原
Table1的词频结果,直接调用all_freq_result[["Table1"]]即可 - 如果你需要把所有表的词频结果合并为一张总表,额外新增列标记数据所属原表,可以改用
map_dfr:
all_freq_combined <- map_dfr(table_list, count_word_freq, .id = "source_table")
内容的提问来源于stack exchange,提问作者Johanna
相关产品推荐
相关产品推荐

