> wdir <- "C:/Users/vlado/docs/papers/2022/ifcs2022/genova/data" > setwd(wdir) > library(jsonlite) > source("https://raw.githubusercontent.com/bavla/Rnet/master/R/Pajek.R") > recode <- function(y){ + ifile <- paste("IDs",y,".csv",sep="") + nfile <- paste("Net",y,".csv",sep="") + T <- read.csv(ifile); A <- read.csv(nfile) + m <- rep(NA,max(T$Id)); m[T$Id] <- T$Label + s <<- c(s,m[A$Source]); t <<- c(t,m[A$Target]) + w <<- c(w,A$Weight); p <<- c(p,rep(y,nrow(A))) + } > Y <- c(2008,2011,2014,2017) > s <- t <- w <- p <- c() > for(y in Y) recode(y) > M <- matrix(unlist(strsplit(gsub(" - ","/",gsub("NA","?",t)),"-")),ncol=2,byrow=TRUE) > v1 <- M[,1]; v2 <- M[,2] > uvrwt2net(s,v1,w=w,r=p,Net="genovaR.net",twomode=TRUE) > uvrwt2net(s,v1,w=w,r=v2,t=p,Net="genovaRT.net",twomode=TRUE)
In Pajek I produced projections to both modes and computed the corresponding Salton indices that I visualized using 1/2-skeletons and used for clustering.
> S <- factor(s); T <- factor(v1); R <- factor(v2); Y <- factor(p) > SN <- levels(S); TN <- levels(T); RN <- levels(R); YN <- levels(Y) > W <- array(0,dim=c(length(SN),length(TN),length(RN),length(YN)), + dimnames = list(SN,TN,RN,YN)) > for(i in 1:length(S)) W[S[i],T[i],R[i],Y[i]] <- w[i] > W[1:2,1:2,,1] ... , , Social sciences, journalism and information Bicocca Bocconi AG 1 0 AL 6 2 > > data <- list(title="Student mobility data in Italian universities 2008, 2011, 2014, 2017", + by=c("VG Genova","G Giordano","G Ragozini","MP Vitale"), + creator="V. Batagelj", date=date(), + modes=c("province","university","programme","year"), + names=list(prov=SN,univ=TN,prog=RN,year=YN),M=W) > write(toJSON(data),"genova.json")
> D <- fromJSON("genova.json") > str(D) List of 7 $ title : chr "Student mobility data in Italian universities 2008, 2011, 2014, 2017" $ by : chr [1:4] "VG Genova" "G Giordano" "G Ragozini" "MP Vitale" $ creator: chr "V. Batagelj" $ date : chr "Fri Nov 4 21:22:19 2022" $ modes : chr [1:4] "province" "university" "programme" "year" $ names :List of 4 ..$ prov: chr [1:107] "AG" "AL" "AN" "AO" ... ..$ univ: chr [1:79] "Bicocca" "Bocconi" "Cà Foscari" "Campus Biomedico" ... ..$ prog: chr [1:11] "?" "Agriculture, forestry, fisheries and veterinary" "Arts and humanities" ... ..$ year: chr [1:4] "2008" "2011" "2014" "2017" $ M : int [1:107, 1:79, 1:11, 1:4] 0 0 0 0 0 0 0 0 0 0 ... > A <- D$M > dimnames(A) <- D$names > A[1:2,1:2,,1] ... , , prog = Social sciences, journalism and information univ prov Bicocca Bocconi AG 1 0 AL 6 2 >
> data <- list(title="Student mobility data in Italian universities 2008, 2011, 2014, 2017", + by=c("VG Genova","G Giordano","G Ragozini","MP Vitale"), + creator="V. Batagelj", date=date(), + waynames=list(prov="province",univ="university",prog="programme",year="year"), + nodes=list(prov=data.frame(ID=SN),univ=data.frame(ID=TN), + prog=data.frame(ID=RN),year=data.frame(ID=YN)), + links=data.frame(link=cbind(S,T,R,Y),w=w)) > write(toJSON(data),"genovaMN.json")
> MN <- fromJSON("genovaMN.json") > str(MN) List of 7 $ title : chr "Student mobility data in Italian universities 2008, 2011, 2014, 2017" $ by : chr [1:4] "VG Genova" "G Giordano" "G Ragozini" "MP Vitale" $ creator : chr "V. Batagelj" $ date : chr "Sun Nov 6 22:31:11 2022" $ waynames:List of 4 ..$ prov: chr "province" ..$ univ: chr "university" ..$ prog: chr "programme" ..$ year: chr "year" $ nodes :List of 4 ..$ prov:'data.frame': 107 obs. of 1 variable: .. ..$ ID: chr [1:107] "AG" "AL" "AN" "AO" ... ..$ univ:'data.frame': 79 obs. of 1 variable: .. ..$ ID: chr [1:79] "Bicocca" "Bocconi" "Cà Foscari" "Campus Biomedico" ... ..$ prog:'data.frame': 11 obs. of 1 variable: .. ..$ ID: chr [1:11] "?" "Agriculture, forestry, fisheries and veterinary" "Arts and humanities" ... ..$ year:'data.frame': 4 obs. of 1 variable: .. ..$ ID: chr [1:4] "2008" "2011" "2014" "2017" $ links :'data.frame': 37205 obs. of 5 variables: ..$ link.S: int [1:37205] 1 1 1 1 1 1 1 1 1 1 ... ..$ link.T: int [1:37205] 1 1 1 1 2 3 4 5 5 5 ... ..$ link.R: int [1:37205] 4 5 9 11 4 3 9 3 5 9 ... ..$ link.Y: int [1:37205] 1 1 1 1 1 1 1 1 1 1 ... ..$ w : int [1:37205] 4 1 1 1 11 1 1 1 1 1 ... >