通过使用'for'循环更改关联矩阵格式的二分网络数据

时间:2016-06-04 00:22:41

标签: r for-loop social-networking adjacency-matrix bipartite

Data_link

您好, 上面的链接是我正在使用的数据,我试图通过使用'for'函数循环将我的数据格式更改为关联矩阵。

如果您看到我拥有的数据('Edgelist sheet'),则titleID位于第一列,而节点(参与该电影的人)位于第三列。

我正在尝试转换的数据格式是一个关联矩阵,其中titleID在行中,人们的名字在列中,如果人们参与电影则为1,如果人们没有,则为0。通过使用这个,我试图稍后进行二分网络分析(双模网络分析)。

下面是我所处理的代码,但正如您所看到的,有太多的循环需要花费太长时间才能处理,我不确定这是否是正确的代码。

有没有办法让代码更有效率?

library('xlsx')
setwd("C:\\Users\\user\\Desktop\\analysis")
movie <- read.xlsx2("Data.xlsx", sheetIndex=3)
edgelist<-read.xlsx2("Data.xlsx", sheetIndex=2)
namelist=edgelist[,3]
names <- unique(namelist)
titleID<- movie[,1]

mat_dat= matrix(0,ncol=length(titleID),nrow=length(names))
dimnames(mat_dat) = list(names,titleID)
mat_dat

pp<-edgelist[,3]
tt<-edgelist[,1]

dim(mat_dat)

for(i in 1:17892){                  #total number of edges
    for(k in 1:2625){               #total movie titles(non-redundant)
      for(l in 1:9021){             #total numbers of people(non-redundant)
        if(titleID[k]==tt[i] & names[l]==pp[i]){
          mat_dat[l,k]<-1 
        }
        else mat_dat[l,k]<- mat_dat[l,k]
      }
    }    
  }

0 个答案:

没有答案