好的。讓我們假設這是你的原始數據集
dd <- data.frame(
id = c("01", "02", "03", "04", "05"),
f1 = c("02", "01", "01", "05", "02"),
f2 = c("03", "04", "04", "02", NA),
f3 = c(NA, NA, "05", "01", NA),
f4 = c(NA, "05", NA, NA, NA)
)
我們可以通過在該行的其他非缺失值的id
列加入所有的值提取類似的EdgeList都。我們可以做到這一點簡單地
edges <- do.call(rbind, Map(cbind, dd[,1], apply(dd[,-1], 1, na.omit)))
我們也提取了獨特的會員ID和頂點
vertices <- unique(as.vector(ids))
N <- length(vertices)
現在我們可以建立兩種方式的鄰接矩陣的總數。我們可以在一個只使用矩陣索引
adj<-matrix(0, nrow=N, ncol=N, dimnames=list(vertices, vertices))
adj[edges]<-1
做,或者我們可以使用的igraph庫
library(igraph)
gg<-simplify(graph.edgelist(edges, directed=F))
get.adjacency(gg)
的igraph
應確保對稱性(樣本數據不是對稱的)。它將返回
01 02 03 04 05
01 . 1 1 1 .
02 1 . . 1 1
03 1 . . 1 1
04 1 1 1 . 1
05 . 1 1 1 .
我不清楚這個輸入的結果是什麼。什麼是「會員ID」?不同的列代表什麼?這些行代表什麼?單元格值代表什麼? – MrFlick
成員標識只是原始示例中的列標識。每列表示與原始「成員id」(id)關聯的一組id。行是每個成員的id其他id似乎被提名...我想恢復的單元格值是來自原始數據集(示例中)似乎是「聯合」的兩個id的發生率...希望這有助於澄清MrFlick – user3761786