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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:50:27