所以我尝试用igraph在R中做一个网络分析,但我是一个R新手。
我的Excel数据库看起来像这样..只是更大。
test<-separate(ID_test, 'Contacts 1', paste("Contacts", 1:20, sep="_"), sep=",", extra="drop")
m <- as.matrix(test)
el <- cbind(m[, 1], c(m[, -1]))
el2<-na.omit(el)
testel<- graph_from_edgelist(el2, directed=FALSE)
plot(testel)
我将Contacts中的数据分隔为多列,并将数据转换为矩阵,这样我就可以使用cbind创建一个边缘列表。
之后,我删除了出现NA的每一行。
然后我可以用igraph绘制我的无向网络。
问题是我有重复的行,其中ID只是在V1和V2之间切换。
因此,我的网络中有两个f.e. ID_009和ID003,因为边缘列表如下所示。
如图所示,第一行和最后一行基本相同,只是V1和V2之间的值发生了切换。
我已经尝试了多种解决方案,但似乎没有一个适合我。
el4<-el3[!duplicated(el[c("V1", "V2")]),] #doesnt recognize the right duplicates as in the example above
el4<-el3[!duplicated(paste(pmin(V1, V2), pmax(V1, V2)))] #Error in pmin(V1, V2) : object 'V1' not found
el4<-el3[!duplicated(paste(pmin("V1", "V2")), pmax("V1", "V2"))] # creates values with which i cant create an network
g <- graph_from_edgelist(unique(rbind(el2[, 1:2])), directed = FALSE) #doesnt change anything
plot(g)
1条答案
按热度按时间6yjfywim1#
以下示例说明了如何以任意顺序删除重复行: