如何调整R语言代码让group_by分组后按类别单独展示Top5关键词
R语言按类别独立展示评论Top5关键词
现有代码可计算各产品类别评论的Top5关键词,但输出为合并列表,需调整为每个类别以独立表格展示。
原代码
# Group by category and count keyword frequencies keyword_counts <- filtered_data %>% group_by(category, keyword) %>% summarise(n = n()) %>% arrange(desc(n)) # Find the top 5 keywords in each category top_keywords_by_category <- keyword_counts %>% group_by(category) %>% top_n(5, wt = n) %>% ungroup() # Ungroup the data # Print the table print(top_keywords_by_category)
调整方案
方法1:控制台基础打印
利用dplyr::group_walk遍历每个类别分组,逐个输出独立表格:
# 生成各类别Top5关键词数据框 keyword_counts <- filtered_data %>% group_by(category, keyword) %>% summarise(n = n(), .groups = "drop_last") %>% arrange(desc(n)) top_keywords_by_category <- keyword_counts %>% group_by(category) %>% top_n(5, wt = n) %>% ungroup() # 按类别拆分并打印独立表格 top_keywords_by_category %>% group_by(category) %>% group_walk(~{ # 打印类别标题 cat("\nCategory:", unique(.x$category), "\n") # 输出当前类别的Top5关键词表格 print(.x %>% select(keyword, n) %>% arrange(desc(n)), row.names = TRUE) })
方法2:美观格式化输出(适用于R Markdown)
配合knitr::kable生成规整的格式化表格:
library(knitr) # 数据生成部分同方法1 top_keywords_by_category %>% group_by(category) %>% group_walk(~{ cat("\n### Category:", unique(.x$category), "\n") print(kable(.x %>% select(keyword, n) %>% arrange(desc(n)), row.names = TRUE)) })
可选优化:截断过长类别名称
若类别层级名称过长,可使用stringr包截断显示:
library(stringr) top_keywords_by_category %>% group_by(category) %>% group_walk(~{ cat("\nCategory:", str_trunc(unique(.x$category), width = 30, ellipsis = "..."), "\n") print(.x %>% select(keyword, n) %>% arrange(desc(n)), row.names = TRUE) })
内容的提问来源于stack exchange,提问作者kartik trivedi
相关产品推荐
相关产品推荐

