您好, 上面的链接是我正在使用的数据,我试图通过使用'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]
}
}
}