投影动态双向/双模网络,其中仅保留时间重叠的边

问题描述

我正在尝试基于双向图创建同事的单模式网络。我有一个数据集,其中包含人员和他们工作的公司,以及他们在任何给定公司开始和结束工作的年份。

我想投影这个无向的双向网络,但只保留时间上重叠的边,以便只有在同一时间在公司工作的人才能连接。

因此,在下面的示例中,我希望在投影后不将person3与person1连接,因为person1于2008年在person3在2009年开始工作之前于2008年停止在company2工作。

我还需要投影的边缘具有权重属性,只要节点协同工作,权重属性就会增加。例如,person1和person2之间的预测边应该为2,因为他们在2009年在company1和2007年在Company 2一起工作。

真实的网络有数千个节点,因此该解决方案不能涉及手动编辑各个边。我正在使用igraph和tidygraph,但是可以从其他任何软件包中获得解决方案。任何从节点列表和边列表创建所需的单模网络而无需从二元/双模图进行投影的解决方案也都可以。

可复制的示例:

library(tidyverse)
library(igraph)

nodes_people <- data.frame(id=c("person1","person2","person3"),type="TRUE")
nodes_inst <- data.frame(id=c("company1","company2","company3"),type="FALSE")
nodes<-bind_rows(nodes_people,nodes_inst)

edges <- data.frame(from=c("person1","person1","person3",to=c("company1","company3","company1","company2"),start_date=c(2008,2007,2003,2002,2009),end_date=c(2010,2008,2012,2006,2009,2010))

g <- graph_from_data_frame(d=edges,vertices=nodes,directed=F) 

is.bipartite(g)

g_one_mode<-bipartite_projection(g)$proj2

plot(g_one_mode)

二部图: bipartite network

单模网络: one-mode

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...