====== Genova / Italian universities / Data ======
===== Converting data into Pajek two-mode temporal network =====
> 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.
* [[http://vladowiki.fmf.uni-lj.si/lib/exe/fetch.php?media=vlado:work:pics:m1-2008-2n.pdf|Provinces and 2008 2-neighbors]]
* [[http://vladowiki.fmf.uni-lj.si/lib/exe/fetch.php?media=vlado:work:pics:2008m2-1n.pdf|Univ+Prog 2008 1-neighbors]]
* [[http://vladowiki.fmf.uni-lj.si/lib/exe/fetch.php?media=vlado:work:pics:m1-2017-2n.pdf|Provinces 2017 2-neighbors]]
* [[http://vladowiki.fmf.uni-lj.si/lib/exe/fetch.php?media=vlado:work:pics:dendm1-2008.pdf|Dendro mode 1 - Provinces 2008]]
* [[http://vladowiki.fmf.uni-lj.si/lib/exe/fetch.php?media=vlado:work:pics:dendm2-2008.pdf|Dendro mode 2 - Univ+Prog 2008]]
* [[http://vladowiki.fmf.uni-lj.si/lib/exe/fetch.php?media=vlado:work:pics:matrix2008.pdf|Matrix representation 2008 / recoded [1 10] ]]
===== Constructing a 4-dimensional array and saving it in JSON =====
> 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")
===== Reading the JSON file and adding names =====
> 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
>
===== Compact JSON representation =====
> 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")
===== Reading compact JSON representation =====
> 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 ...
>