![](/img/trans.png)
[英]Is there a way to create a network of word associations using a bi-partite network analysis in R?
[英]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.