R中按大学分组计算词对pairwise_cor并保留分组列的方法
解决方案
首先确保你使用的是widyr和dplyr包的最新版本,然后按以下步骤操作:
1. 正确分组计算词对相关性
假设你的数据集df包含Universidad(大学)、palabra(单词)、document(文档ID,用于标识单词所属的文档)三列,执行以下代码:
library(dplyr) library(widyr) # 按大学分组,计算词对相关性 cor_df <- df %>% group_by(Universidad) %>% pairwise_cor( item = palabra, # 要计算相关性的项(单词) feature = document, # 关联单词的特征(文档,确保同文档内的词被匹配) sort = TRUE, # 按相关性排序 upper = FALSE # 避免重复的词对(如A-B和B-A只保留一个) )
执行后cor_df会包含Universidad、item1、item2、correlation四列,完全符合你的需求。
2. 旧版本兼容方案
如果上述代码没有保留Universidad列,可能是widyr版本问题,改用do()函数包裹计算逻辑:
cor_df <- df %>% group_by(Universidad) %>% do( pairwise_cor( data = ., item = palabra, feature = document, sort = TRUE ) )
3. 用ggraph绘制分大学的词共现图
得到目标数据集后,就可以结合ggraph和igraph绘制分面的词共现关系图:
library(ggraph) library(igraph) cor_df %>% filter(correlation > 0.3) %>% # 过滤出相关性较高的词对(阈值可调整) graph_from_data_frame() %>% ggraph(layout = "fr") + geom_edge_link(aes(edge_alpha = correlation, edge_width = correlation)) + geom_node_point(size = 5, color = "#2c3e50") + geom_node_text(aes(label = name), repel = TRUE, color = "#2c3e50") + facet_wrap(~Universidad) + # 按大学分面展示 theme_void()
问题原因说明
pairwise_count能保留分组列是因为它的逻辑在分组处理时默认保留分组变量,而部分旧版widyr的pairwise_cor可能存在分组变量丢失的问题,通过上述两种分组计算方式就能解决。
内容的提问来源于stack exchange,提问作者Christian Moreno
相关产品推荐
相关产品推荐

