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]
      }
    }    
  }