[英]creating adjacency network matrix (or list) from large csv dataset using igraph
我正在嘗試在igraph中進行網絡分析,但是由於列數不同,在將數據集轉換為邊緣列表(帶有權重)時會遇到一些問題。
數據集如下所示(當然要大得多):首先是主操作員ID(主操作員也可以是伙伴,反之亦然,因此ID在鄰接處保持不變)挑戰是伙伴數量會變化(從0到40)。
IdMain IdPartner1 IdPartner2 IdPartner3 IdPartner4 .....
1 4 3 2 NA
2 3 1 NA NA
3 1 4 7 6
4 9 6 3 NA
.
.
我的問題是如何將其轉換為無權重的邊緣列表(僅表示交互):
Id1 Id2 weight
1 2 2
1 3 2
1 4 1
2 3 1
3 4 2
. .
有沒有人給小費最好的方法是什么? 提前謝謝了!
這是經典的重塑任務。 您可以為此使用reshape2
包。
text <- "IdMain IdPartner1 IdPartner2 IdPartner3 IdPartner4
1 4 3 2 NA
2 3 NA NA NA
3 1 4 7 6
4 9 NA NA NA"
data <- read.delim(text = text, sep = "")
library(reshape2)
data_melt <- reshape2::melt(data, id.vars = "IdMain")
edgelist <- data_melt[!is.na(data_melt$value), c("IdMain", "value")]
head(edgelist, 4)
# IdMain value
# 1 1 4
# 2 2 3
# 3 3 1
# 4 4 9
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.