簡體   English   中英

投影動態 bi-partite/two-mode.network,其中只保留時間重疊的邊緣

[英]projecting dynamic bi-partite/two-mode network where only edges overlapping in time is kept

我正在嘗試基於二分圖創建一個單一模式的同事網絡。 我有一個數據集,其中包含人員和他們工作的公司,以及他們在任何給定公司開始和結束工作的年份。

我想投影這個無向的bipartite.network,但只保留時間上重疊的邊,這樣只有同時在一家公司工作的人才能連接起來。

因此,在下面的示例中,我希望 person3 在投影后不要連接到 person1,因為 person1 於 2008 年停止在 company2 工作,而 person3 於 2009 年開始工作。

我還需要投影邊具有一個權重屬性,該屬性會在節點協同工作時增加。 例如,person1 和 person2 之間的投影邊應為 2,因為他們 2009 年在公司 1 工作,2007 年在公司 2 工作。

real.network 有數千個節點,因此解決方案不能涉及手動編輯單個邊。 我正在使用 igraph 和 tidygraph,但任何其他 package 的解決方案都可以。 任何從節點列表和邊緣列表創建所需的 one-mode.network 而不從二分圖/雙模式圖投影的解決方案也很好。

可重現的例子:

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","person2","person3","person2","person3"),
                      to=c("company1","company2","company2","company3","company1","company2"),
              start_date=c(2008,2007,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.network:單模

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM