====== List of titles for WoS islands ======
===== Second version (September 2013) =====
WoS2Pajek 1.2 (September 2013) creates also a csv file ''titles.csv'' with works names and their title, first author, journal and year of publication. This file can be merged with a subnetwork (island) net file to produce a list of titles of works contained in the subnetwork. It uses the Python csv library.
> setwd("E:/Data/Centrality/net")
> Code <- function(x) paste(substr(unlist(strsplit(x," ")),1,1),collapse="")
> T <- read.csv('../WoS/titles.csv',sep=";",colClasses="character")
> dim(T)
[1] 38535 6
> names(T)
[1] "name" "WoSline" "author" "title" "journal" "year"
> T$WoSline <- as.integer(T$WoSline)
> T$year <- as.integer(T$year)
> n <- nrow(T)
> cod <- character(n)
> for(i in 1:n) cod[i] <- Code(as.character(T$journal[i]))
> T$code <- cod
> save(T,file="titlesCentr.Rdata")
> dim(T)
[1] 38535 7
#
# description produces a csv file csvFile containing a table with columns
# (name, WoSline, author, title, journal, year, code)
# for vertices of a subnetwork from file netFile.
# The titles for all (DC>0) vertices are stored in the table T.
# Since for vertices with DC=0 the title is not available it takes '***'.
#
# Vladimir Batagelj, September 7, 2013 / August 19, 2013
#
description <- function(netFile,csvFile,T){
f <- function(L){
s <- unlist(strsplit(L,"[[:space:]]+"))
if(s[1]=="") t <- s[3] else t <- s[2]
t <- substr(t,2,nchar(t)-1)
if(substr(t,1,1)=="=") t <- substr(t,2,nchar(t))
return(t)
}
net <- file(netFile,"r")
L <- readLines(net,n=1)
n <- as.integer(unlist(strsplit(L,"[[:space:]]+"))[2])
S <- readLines(net,n=n); close(net)
N <- gsub("'","'",unlist(lapply(S,f)))
nn <- length(N); tit <- character(nn); aut <- character(nn); jrn <- character(nn);
cod <- character(nn); wos <- integer(nn); yer <- integer(nn)
for(k in 1:nn){j <- which(T$name==N[k]);
tit[k] <- ifelse(length(j)==0,NA,T$title[j])
aut[k] <- ifelse(length(j)==0,NA,T$author[j])
wos[k] <- ifelse(length(j)==0,NA,T$WoSline[j])
jrn[k] <- ifelse(length(j)==0,NA,T$journal[j])
cod[k] <- ifelse(length(j)==0,NA,T$code[j])
yer[k] <- ifelse(length(j)==0,NA,T$year[j])
if(is.na(yer[k])){
l <- regexpr("(",N[k],fixed=TRUE)[1]+1
r <- regexpr(")",N[k],fixed=TRUE)[1]-1
yer[k] <- as.integer(substr(N[k],l,r))
}
}
D <- data.frame(name=as.character(N),WoSline=wos,author=as.character(aut),
title=as.character(tit),journal=as.character(jrn),year=yer,code=as.character(cod))
write.csv2(D,file=csvFile,fileEncoding="UTF-8",row.names=FALSE,quote=FALSE)
return(D)
}
Application:
> setwd("E:/Data/Centrality/net")
> load("titlesCentr.Rdata")
> names(T)
[1] "name" "WoSline" "author" "title" "journal" "year" "code"
> dim(T)
[1] 38535 7
> source("E:\\Data\\Centrality\\net\\res\\description.R")
> d <- description("./res/island2.net","./res/island2new.csv",T)
===== First version (August 2013) =====
WoS2Pajek 1.2 (August 2013) creates also a csv file ''titles.csv'' with works names and their titles. This file can be merged with a subnetwork (island) net file to produce a list of titles of works contained in the subnetwork.
> setwd("D:/Data/Centrality/WoS")
> T <- read.csv("titles.csv",header=FALSE,sep="รท",quote="",colClasses="character")
> t <- T$V1[1]
> s <- substr(t,23,23)
> U <- as.data.frame(matrix(unlist(strsplit(T$V1,s)),ncol=2,byrow=TRUE))
> names(U) <- c("name","title")
> library(gdata)
> U$title <- trim(U$title)
> T$name <- as.character(U$name)
> T$title <- as.character(U$title)
> write.table(T,file="CentTitles.csv",sep=";",qmethod="double",row.names=FALSE)
> save(T,file="CentTitles.Rdata")
> write.table(T,file="CentTit.csv",sep=";",fileEncoding="UTF-8",qmethod="double",row.names=FALSE,quote=FALSE)
Function in R to create a list:
#
# description produces a csv file csvFile containing a table with columns
# (name, year, title) for vertices of a subnetwork from file netFile.
# The titles for all (DC>0) vertices are stored in the table T.
# Since for vertices with DC=0 the title is not available it takes '***'.
#
# Vladimir Batagelj, August 19, 2013
#
description <- function(netFile,csvFile,T){
f <- function(L){
s <- unlist(strsplit(L,"[[:space:]]+"))
if(s[1]=="") t <- s[3] else t <- s[2]
t <- substr(t,2,nchar(t)-1)
if(substr(t,1,1)=="=") t <- substr(t,2,nchar(t))
return(t)
}
getYear <- function(x){
i <- regexpr('\\(',x)[1]+1; j <- regexpr('\\)',x)[1]-1
ifelse(i
Application:
setwd("D:/Data/Centrality/net")
source("D:\\Data\\Centrality\\net\\res\\description.R")
T <- read.csv("../WoS/CentTitles.csv",header=TRUE,sep=";",colClasses="character")
d <- description("./res/mainPath.net","./res/mainPath.csv",T)
Instead of the command ''T <- read.csv'' we can use also
T <- load("CentTitles.Rdata")