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

在R语言中构建邻接矩阵:客户博物馆访问数据处理问题咨询

嗨,我来帮你搞定这个邻接矩阵的构建问题!从你的visite_cliente数据来看,每一行记录了某个客户对某家博物馆的访问总次数,我们可以基于这个数据构建两种常用的邻接矩阵:客户之间的关联矩阵(衡量客户共同访问的博物馆情况),或者博物馆之间的关联矩阵(衡量博物馆被同一客户访问的重叠度)。下面分步骤给你具体方案:

解决方案:构建邻接矩阵

第一步:先把数据转成「客户×博物馆」的关联矩阵

首先我们需要把长格式的visite_cliente转换成宽格式,行是客户ID,列是博物馆名称,单元格值是该客户对对应博物馆的访问次数。这里用tidyr包的pivot_wider来实现:

# 如果没装tidyr先安装:install.packages("tidyr")
library(tidyr)

# 转换为宽格式,缺失值用0填充(表示该客户没访问过这个博物馆)
cliente_museo_wide <- visite_cliente %>%
  pivot_wider(names_from = museo, values_from = x, values_fill = 0)

# 把客户ID设为行名,方便后续矩阵操作
cliente_museo_matrix <- column_to_rownames(cliente_museo_wide, var = "CodCliente")

转换后你会得到一个矩阵,行是每个客户,列是每家博物馆,值是访问次数。

第二步:构建客户之间的邻接矩阵

如果你想衡量任意两个客户共同访问的博物馆总次数,直接用矩阵乘法即可:

# 客户间邻接矩阵:adj_cliente[i,j] 表示客户i和客户j共同访问的博物馆总次数
adj_cliente <- cliente_museo_matrix %*% t(cliente_museo_matrix)

如果你的需求是只统计共同访问过的博物馆数量(不管访问次数),可以先把矩阵转成0-1二进制矩阵(访问过=1,没访问=0),再计算:

# 转换为二进制矩阵
cliente_museo_binary <- ifelse(cliente_museo_matrix > 0, 1, 0)

# 客户间二进制邻接矩阵:adj_cliente_binary[i,j] 是客户i和j共同访问的博物馆数量
adj_cliente_binary <- cliente_museo_binary %*% t(cliente_museo_binary)

比如你提供的前6条数据里,所有客户都访问了ABBAZIA DI FRUTTUARIA,那这些客户之间的二进制邻接值都是1,其他没交集的客户则为0。

第三步:构建博物馆之间的邻接矩阵

如果需要衡量任意两家博物馆被同一客户访问的总次数,只需要把上面的矩阵转置后相乘:

# 博物馆间邻接矩阵:adj_museo[i,j] 表示博物馆i和j被同一客户访问的总次数
adj_museo <- t(cliente_museo_matrix) %*% cliente_museo_matrix

同样,如果要统计共同访问的客户数量,用二进制矩阵计算:

adj_museo_binary <- t(cliente_museo_binary) %*% cliente_museo_binary

可选:用igraph包快速构建(适合后续做图分析)

如果你还需要做图可视化或者更复杂的网络分析,可以用igraph包直接从原始数据构建二分图,再投影出邻接矩阵:

# 如果没装igraph先安装:install.packages("igraph")
library(igraph)

# 构建客户-博物馆的二分图
g <- graph_from_data_frame(visite_cliente, directed = FALSE)
# 标记节点类型:区分客户和博物馆
V(g)$type <- V(g)$name %in% as.character(visite_cliente$CodCliente)

# 投影得到客户间的邻接矩阵
adj_cliente_igraph <- bipartite_projection(g, which = "true")$adjacency
# 投影得到博物馆间的邻接矩阵
adj_museo_igraph <- bipartite_projection(g, which = "false")$adjacency

这样得到的邻接矩阵和前面的计算结果是一致的,同时你还可以直接用igraph的函数做网络可视化。

内容的提问来源于stack exchange,提问作者ianux22

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:08:09