1. Performance indexes

This section describes the performance indexes considered in this analysis:

  • Total publications (TP). Total number of publications.

  • Total journal publications (TP\(_j\)). Total number of journal publications.

  • Total conference proceeding publications (TP\(_p\)). Total number of conference proceeding publications.

  • Percentage of journal publications (%TP\(_j\)). \(\frac{TP_j}{TP} \times 100\)

  • Percentage of conference proceeding publications (%TP\(_p\)). \(\frac{TP_p}{TP} \times 100\)

  • Average publications by academics (AP). Average number of manuscripts published by academic.

  • Average journal publications by academics (AP\(_j\)). Average number of manuscripts published in journals by academics.

  • Average conference proceeding publications by academic (AP\(_p\)). Average number of manuscripts published in conference proceedings by academics.

  • Average publications by year (APY). Average number of manuscripts published by year.

  • Average journal publications by year (AP\(_j\)Y). Average number of manuscripts published in journals by year.

  • Average conference proceeding publications by year (AP\(_p\)Y). Average number of manuscripts published in conference proceedings by year.

  • Number of active years of publications (NAY). Number of years that research constituent record a publication.

  • Productivity per active year of publication (PAY). \(\frac{TP}{NAY}\)

  • Total citations (TC). Total number of citations.

  • Average citations by publication (AC). \(\frac{TC}{TP}\)

  • Number of cited publications (NCP). Number of cited publications.

  • Proportion of cited publications (PCP). \(\frac{NCP}{TP}\)

  • Citations per cited publication (CPP). \(\frac{TC}{NCP}\)

This indexes can be calculated by using the next script:

#A) Lectura de datos

library("DT")
library("stringr")

datos = read.csv("BD/BD.csv",header=T,sep = ";",check.names = F)
idx = which(datos$Filiación_USACH=="SI")        #Filiación a Biomédica
datos_ftr = datos[idx,]
datos_ftr$Año=as.numeric(datos_ftr$Año)

#B) Filtros para indicadores en tablas
sel_universidad = "Universities" # "Universities, Universidad de Valparaíso, Universidad de Concepción, 
                                 #  Universidad de Santiago de Chile"
sel_ano_ini = 0                  #  ALL, #unique(datos$Año)
sel_ano_fin = 2022

if (sel_ano_ini!="ALL") 
{
  idx = which((datos_ftr$Año>=sel_ano_ini) & (datos_ftr$Año<=sel_ano_fin))
  datos_ftr=datos_ftr[idx,]
} 


#===================================================
#C) Creación de indicadores para universidades
#===================================================

if (sel_universidad=="Universities")
{  
  
    #-------------------
    # 1) TP - Total publications
    #-------------------
    TP = rep(3,0)
    TP[1] = length(datos_ftr$Universidad[which(datos_ftr$Universidad=="UV")]) 
    TP[2] = length(datos_ftr$Universidad[which(datos_ftr$Universidad=="UdeC")]) 
    TP[3] = length(datos_ftr$Universidad[which(datos_ftr$Universidad=="USACH")]) 
  
    #------------------
    # 2) TPj - Total journal publications
    #-------------------
    TPj = rep(3,0)
    TPj[1] = length(datos_ftr$Universidad[which((datos_ftr$Universidad=="UV") & 
                                                  (datos_ftr$`Tipo de documento`=="Article"))]) 
    TPj[2] = length(datos_ftr$Universidad[which((datos_ftr$Universidad=="UdeC") 
                                                & (datos_ftr$`Tipo de documento`=="Article"))]) 
    TPj[3] = length(datos_ftr$Universidad[which((datos_ftr$Universidad=="USACH") 
                                                & (datos_ftr$`Tipo de documento`=="Article"))]) 
  
    #------------------
    # 3) TPp - Total conference proceeding publications
    #-------------------
    TPp = rep(3,0)
    TPp[1] = length(datos_ftr$Universidad[which((datos_ftr$Universidad=="UV") & 
                                                  (datos_ftr$`Tipo de documento`=="Conference Paper"))]) 
    TPp[2] = length(datos_ftr$Universidad[which((datos_ftr$Universidad=="UdeC") & 
                                                  (datos_ftr$`Tipo de documento`=="Conference Paper"))]) 
    TPp[3] = length(datos_ftr$Universidad[which((datos_ftr$Universidad=="USACH") & 
                                                  (datos_ftr$`Tipo de documento`=="Conference Paper"))]) 
  
    #------------------
    # 4) %TP$_j$ - Percentage of journal publications
    #-------------------
    Per_TPj = rep(3,0)
    Per_TPj[1] = round((TPj[1]/TP[1]) * 100,1)
    Per_TPj[2] = round((TPj[2]/TP[2]) * 100,1)
    Per_TPj[3] = round((TPj[3]/TP[3]) * 100,1)
    
    #------------------
    # 5) %TP$_p$ - Percentage of conference proceeding publications
    #-------------------
    Per_TPp= rep(3,0)
    Per_TPp[1] = round((TPp[1]/TP[1]) * 100,1)
    Per_TPp[2] = round((TPp[2]/TP[2]) * 100,1)
    Per_TPp[3] = round((TPp[3]/TP[3]) * 100,1)
    
    
    #------------------
    # 6) AP - Average publications by academics
    #-------------------
    AP  = rep(3,0)
    AP[1] = round(TP[1]/length(unique(datos_ftr$Nombre[which(datos_ftr$Universidad=="UV")])),1)
    AP[2] = round(TP[2]/length(unique(datos_ftr$Nombre[which(datos_ftr$Universidad=="UdeC")])),1)
    AP[3] = round(TP[3]/length(unique(datos_ftr$Nombre[which(datos_ftr$Universidad=="USACH")])),1)
 
    #------------------
    # 7) APj - Average journal publications by academics
    #-------------------
    APj  = rep(3,0)
    APj[1] = round(TPj[1]/length(unique(datos_ftr$Nombre[which(datos_ftr$Universidad=="UV")])),1)
    APj[2] = round(TPj[2]/length(unique(datos_ftr$Nombre[which(datos_ftr$Universidad=="UdeC")])),1)
    APj[3] = round(TPj[3]/length(unique(datos_ftr$Nombre[which(datos_ftr$Universidad=="USACH")])),1)
  
    #------------------
    # 8) APp - Average conference proceeding publications by academic
    #-------------------
    APp  = rep(3,0)
    APp[1] = round(TPp[1]/length(unique(datos_ftr$Nombre[which(datos_ftr$Universidad=="UV")])),1)
    APp[2] = round(TPp[2]/length(unique(datos_ftr$Nombre[which(datos_ftr$Universidad=="UdeC")])),1)
    APp[3] = round(TPp[3]/length(unique(datos_ftr$Nombre[which(datos_ftr$Universidad=="USACH")])),1)     
    
    #------------------
    # 9) APY - Average publications by year
    #-------------------
    APY = rep(3,0)
    APY[1] = round(TP[1]/(max(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="UV")]))-
                      min(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="UV")]))+1),1)
    APY[2] = round(TP[2]/(max(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="UdeC")]))-
                      min(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="UdeC")]))+1),1)
    APY[3] = round(TP[3]/(max(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="USACH")]))-
                      min(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="USACH")]))+1),1)

    #------------------
    # 10) APjY - Average journal publications by year 
    #-------------------
    APjY = rep(3,0)
    APjY[1] = round(TPj[1]/(max(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="UV")]))-
                      min(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="UV")]))+1),1)
    APjY[2] = round(TPj[2]/(max(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="UdeC")]))-
                      min(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="UdeC")]))+1),1)
    APjY[3] = round(TPj[3]/(max(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="USACH")]))-
                      min(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="USACH")]))+1),1)

    #------------------
    # 11) APpY - Average conference proceeding publications by year 
    #-------------------
    APpY = rep(3,0)
    APpY[1] = round(TPp[1]/(max(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="UV")]))-
                      min(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="UV")]))+1),1)
    APpY[2] = round(TPp[2]/(max(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="UdeC")]))-
                      min(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="UdeC")]))+1),1)
    APpY[3] = round(TPp[3]/(max(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="USACH")]))-
                      min(as.numeric(datos_ftr$Año[which(datos_ftr$Universidad=="USACH")]))+1),1)

    #------------------
    # 12) NAY - Number of active years of publications
    #-------------------
    NAY = rep(3,0)
    NAY[1] = length(unique(datos_ftr$Año[which(datos_ftr$Universidad=="UV")]))
    NAY[2] = length(unique(datos_ftr$Año[which(datos_ftr$Universidad=="UdeC")]))
    NAY[3] = length(unique(datos_ftr$Año[which(datos_ftr$Universidad=="USACH")]))
    
    #------------------
    # 13) PAY - Productivity per active year of publication
    #-------------------
    PAY = rep(3,0)
    PAY[1] = round(TP[1]/NAY[1],1)
    PAY[2] = round(TP[2]/NAY[2],1)
    PAY[3] = round(TP[3]/NAY[3],1)
    
    
    #------------------
    # 14) TC - Total number of citations
    #-------------------
    TC = rep(3,0)
    TC[1] = length(unique(datos_ftr$`Citado por`[which(datos_ftr$Universidad=="UV")]))
    TC[2] = length(unique(datos_ftr$`Citado por`[which(datos_ftr$Universidad=="UdeC")]))
    TC[3] = length(unique(datos_ftr$`Citado por`[which(datos_ftr$Universidad=="USACH")]))
    
    #------------------
    # 15) AC - Average citations by publication
    #-------------------
    AC = rep(3,0)
    AC[1] = round(TP[1]/TC[1],1)
    AC[2] = round(TP[2]/TC[2],1)
    AC[3] = round(TP[2]/TC[2],1)
    
    #------------------
    # 16) NCP - Number of cited publications
    #-------------------
    NCP = rep(3,0)
    NCP[1] =  length(which(datos_ftr$`Citado por`[which(datos_ftr$Universidad=="UV")]>0))
    NCP[2] =  length(which(datos_ftr$`Citado por`[which(datos_ftr$Universidad=="UdeC")]>0))       
    NCP[3] =  length(which(datos_ftr$`Citado por`[which(datos_ftr$Universidad=="USACH")]>0))
   
    #------------------
    # 17) PCP - Proportion of cited publications
    #------------------- 
    PCP = rep(3,0)
    PCP[1] = round(NCP[1]/TP[1],1)
    PCP[2] = round(NCP[2]/TP[2],1)
    PCP[3] = round(NCP[3]/TP[3],1)
  
    #------------------
    # 18) CPP - Citations per cited publication
    #------------------- 
    CPP = rep(3,0)
    CPP[1] = round(TC[1]/NCP[1],1)
    CPP[2] = round(TC[2]/NCP[2],1)
    CPP[3] = round(TC[3]/NCP[3],1)
    
    
    #Generación de tabla
    indicadores = c("Total publications","Total journal publications","Total conference proceeding publications",
                    "Percentage of journal publications","Percentage of conference proceeding publications",
                    "Average publications by academics","Average journal publications by academics",
                    "Average conference proceeding publications by academic","Average publications by year",
                    "Average journal publications by year","Average conference proceeding publications by year",
                    "Number of active years of publications","Productivity per active year of publication",
                    "Total number of citations","Average citations by publication","Number of cited publications",
                    "Proportion of cited publications","Citations per cited publication")
    
    matriz_datos = rbind(TP,TPj,TPp,Per_TPj,Per_TPp,AP,APj,APp,APY,APjY,APpY,NAY,PAY,TC,AC,NCP,PCP,CPP)
    colnames(matriz_datos)=c("UV","UdeC","USACH")
    rownames(matriz_datos)=indicadores
    matriz_datos[which(is.na(matriz_datos))]=0
    
    datatable(matriz_datos, class = 'display', options = list(pageLength = 20, dom = 'Brt',
                         autoWidth = TRUE))
    
  #B - Buttons
  #f - filtering input
  #r - processing display element
  #t - The table
  #i - Table information summary
  #p - pagination control

}
# Datos separados por académicos(as)

sel_universidad="USACH"

if (sel_universidad!="Universities")
{  
  datos_ftr = datos_ftr[which(datos_ftr$Universidad==sel_universidad),] 
  datos_ftr = datos_ftr[order(datos_ftr$Nombre),]
  
  profesores = unique(datos_ftr$Nombre)
  matriz_datos = NULL
  
  for (a in 1:length(profesores))
  {
    
    #-------------------
    # 1) TP - Total publications
    #-------------------
    TP = length(datos_ftr$Nombre[which(datos_ftr$Nombre==profesores[a])]) 
    
  
    #------------------
    # 2) TPj - Total journal publications
    #-------------------
    TPj = length(datos_ftr$Nombre[which((datos_ftr$Nombre==profesores[a]) & 
                                                  (datos_ftr$`Tipo de documento`=="Article"))]) 
    
    
     #------------------
    # 3) TPp - Total conference proceeding publications
    #-------------------
    TPp = length(datos_ftr$Nombre[which((datos_ftr$Nombre==profesores[a]) & 
                                                  (datos_ftr$`Tipo de documento`=="Conference Paper"))])  
    
    #------------------
    # 4) %TP$_j$ - Percentage of journal publications
    #-------------------
    Per_TPj = round((TPj/TP)*100,1)
    
    #------------------
    # 5) %TP$_p$ - Percentage of conference proceeding publications
    #-------------------
    Per_TPp = round((TPp/TP)*100,1)
    
    #------------------
    # 6) APY - Average publications by year
    #-------------------
    APY = round(TP/(max(as.numeric(datos_ftr$Año[which(datos_ftr$Nombre==profesores[a])]))-
                      min(as.numeric(datos_ftr$Año[which(datos_ftr$Nombre==profesores[a])]))+1),1)
    
    #------------------
    # 7) APjY - Average journal publications by year 
    #-------------------
    APjY = round(TPj/(max(as.numeric(datos_ftr$Año[which(datos_ftr$Nombre==profesores[a])]))-
                      min(as.numeric(datos_ftr$Año[which(datos_ftr$Nombre==profesores[a])]))+1),1)
    
    #------------------
    # 8) APpY - Average journal publications by year 
    #-------------------
    APpY = round(TPp/(max(as.numeric(datos_ftr$Año[which(datos_ftr$Nombre==profesores[a])]))-
                      min(as.numeric(datos_ftr$Año[which(datos_ftr$Nombre==profesores[a])]))+1),1) 
    
    #------------------
    # 9 NAY - Number of active years of publications
    #-------------------
    NAY = length(unique(datos_ftr$Año[which(datos_ftr$Nombre==profesores[a])]))
    
    #------------------
    # 10) PAY - Productivity per active year of publication
    #-------------------
    PAY = round(TP/NAY,1)

    #------------------
    # 11) TC - Total number of citations
    #-------------------    
    TC = length(unique(datos_ftr$`Citado por`[which(datos_ftr$Nombre==profesores[a])]))

    #------------------
    # 12) AC - Average citations by publication
    #-------------------        
    AC = round(TP/TC,1)
    
    #------------------
    # 13) NCP - Number of cited publications
    #-------------------
    NCP =  length(which(datos_ftr$`Citado por`[which(datos_ftr$Nombre==profesores[a])]>0))
 
    #------------------
    # 14) PCP - Proportion of cited publications
    #-------------------     
    PCP = round(NCP/TP,1)
    
    #------------------
    # 15) CPP - Citations per cited publication
    #-------------------
    CPP = round(TC/NCP,1)  
    
    indicadores = c("Names","TP","TPj","TPp","%TP_j","%TP_p","APY","APjY","APpY","NAY","PAY","TC","AC","NCP","PCP","CPP")

    #Generación de table
    matriz_datos = rbind(matriz_datos,cbind(profesores[a],TP,TPj,TPp,Per_TPj,Per_TPp,APY,APjY,APpY,NAY,PAY,TC,AC,NCP,PCP,CPP))

    colnames(matriz_datos) = indicadores
  }
  
  datatable(matriz_datos, class = 'display', options = list(pageLength = 20, dom = 'Bfrtp',
            autoWidth = TRUE))
  
}

2. Collaboration indexes

  • Number of academics (NA). Total number of academics.

  • Number of contributing authors (NCA). Total number of authors contributing to publications.

  • Average contributing authors (ANCA). \(\frac{NCA}{TP}\).

  • Sole-authored publications (SA). Total number of sole-authored publications.

  • Percentage of sole-authored publications (%SA). \[\frac{SA}{TP} \times 100\]

  • Co-authored publications (CA). Total number of co-authored publications.

  • Percentage of co-authored publications (%CA). \[\frac{CA}{TP} \times 100\]

#Contar número de autores por publicación


datos = read.csv("BD/BD.csv",header=T,sep = ";",check.names = F)
idx = which(datos$Filiación_USACH=="SI")        #Filiación a Biomédica
datos_ftr = datos[idx,]
datos_ftr$Año=as.numeric(datos_ftr$Año)

#B) Filtros para indicadores en tablas
sel_universidad = "Universities" # "Universities, Universidad de Valparaíso, Universidad de Concepción, 
                                 #  Universidad de Santiago de Chile"
sel_ano_ini = 0                  #  ALL, #unique(datos$Año)
sel_ano_fin = 2022

if (sel_ano_ini!="ALL") 
{
  idx = which((datos_ftr$Año>=sel_ano_ini) & (datos_ftr$Año<=sel_ano_fin))
  datos_ftr=datos_ftr[idx,]
} 


datos_ftr$N_autores=str_count(datos_ftr$Autores,",")+1

  
#-------------------
# 1) NOA - Number of academics
#-------------------
NOA = rep(3,0)
NOA[1] = length(unique(datos_ftr$Nombre[which(datos_ftr$Universidad=="UV")])) 
NOA[2] = length(unique(datos_ftr$Nombre[which(datos_ftr$Universidad=="UdeC")]))  
NOA[3] = length(unique(datos_ftr$Nombre[which(datos_ftr$Universidad=="USACH")])) 

#-------------------
# 2) NCA - Number of contributing authors
#-------------------
NCA = rep(3,0)
NCA[1] = sum(datos_ftr$N_autores[which(datos_ftr$Universidad=="UV")])
NCA[2] = sum(datos_ftr$N_autores[which(datos_ftr$Universidad=="UdeC")]) 
NCA[3] = sum(datos_ftr$N_autores[which(datos_ftr$Universidad=="USACH")])

#-------------------
# 3) ANCA - Average contributing authors
#-------------------

TP = rep(3,0)
TP[1] = length(datos_ftr$Universidad[which(datos_ftr$Universidad=="UV")]) 
TP[2] = length(datos_ftr$Universidad[which(datos_ftr$Universidad=="UdeC")]) 
TP[3] = length(datos_ftr$Universidad[which(datos_ftr$Universidad=="USACH")]) 
    
ANCA = rep(3,0)
ANCA[1] = round(NCA[1]/TP[1],1)
ANCA[2] = round(NCA[2]/TP[2],1)
ANCA[3] = round(NCA[3]/TP[3],1)

#-------------------
# 4) SA - Sole-authored publications
#-------------------
SA = rep(3,0)
SA[1] = length(which(datos_ftr$N_autores[which(datos_ftr$Universidad=="UV")]==1))
SA[2] = length(which(datos_ftr$N_autores[which(datos_ftr$Universidad=="UdeC")]==1))
SA[3] = length(which(datos_ftr$N_autores[which(datos_ftr$Universidad=="USACH")]==1))


#-------------------
# 5) %SA - Percentage of sole-authored publications 
#-------------------
PSA = rep(3,0)
PSA[1] = round((SA[1]/TP[1])*100,1)
PSA[2] = round((SA[2]/TP[2])*100,1)
PSA[3] = round((SA[3]/TP[3])*100,1)

#-------------------
# 6) CA - Co-authored publications
#-------------------
CA = rep(3,0)
CA[1] = length(which(datos_ftr$N_autores[which(datos_ftr$Universidad=="UV")]>1))
CA[2] = length(which(datos_ftr$N_autores[which(datos_ftr$Universidad=="UdeC")]>1))
CA[3] = length(which(datos_ftr$N_autores[which(datos_ftr$Universidad=="USACH")]>1))

#-------------------
# 7) %CA - Percentage of co-authored publications
#-------------------
PCA = rep(3,0)
PCA[1] = round((CA[1]/TP[1])*100,1)
PCA[2] = round((CA[2]/TP[2])*100,1)
PCA[3] = round((CA[3]/TP[3])*100,1)


#Generación de tabla
indicadores = c("Number of academics","Number of contributing authors","Average contributing authors",
                "Sole-authored publications","Percentage of sole-authored publications",
                "Co-authored publications","Percentage of co-authored publications")

matriz_datos = rbind(NOA,NCA,ANCA,SA,PSA,CA,PCA)
colnames(matriz_datos)=c("UV","UdeC","USACH")
rownames(matriz_datos)=indicadores
matriz_datos[which(is.na(matriz_datos))]=0
    
datatable(matriz_datos, class = 'display', options = list(pageLength = 20, dom = 'Brt', autoWidth = TRUE))
#Datos separados por académicos(as)

sel_universidad="USACH"

if (sel_universidad!="Universities")
{  
  datos_ftr = datos_ftr[which(datos_ftr$Universidad==sel_universidad),] 
  datos_ftr = datos_ftr[order(datos_ftr$Nombre),]
  
  profesores = unique(datos_ftr$Nombre)
  matriz_datos = NULL
  
  for (a in 1:length(profesores))
  {
  #-------------------
  # 1) NCA - Number of contributing authors
  #-------------------
    NCA = sum(datos_ftr$N_autores[which(datos_ftr$Nombre==profesores[a])])

  #-------------------
  # 2) ANCA - Average contributing authors
  #-------------------
    TP =  length(datos_ftr$Nombre[which(datos_ftr$Nombre==profesores[a])]) 
    ANCA = round(NCA/TP,1)
    
  #-------------------
  # 3) SA - Sole-authored publications
  #-------------------
    SA = length(which(datos_ftr$N_autores[which(datos_ftr$Nombre==profesores[a])]==1))

  #-------------------
  # 4) %SA - Percentage of sole-authored publications 
  #-------------------
    PSA = round((SA/TP)*100,1)
    
  #-------------------
  # 5) CA - Co-authored publications
  #-------------------    
    CA = length(which(datos_ftr$N_autores[which(datos_ftr$Nombre==profesores[a])]>1))


  #-------------------
  # 6) %CA - Percentage of co-authored publications
  #-------------------    
    PCA = round((CA/TP)*100,1)
   
    indicadores = c("Names","NCA","ANCA","SA","PSA","CA","PCA")
  
    #Generación de table
    matriz_datos = rbind(matriz_datos,cbind(profesores[a],NCA,ANCA,SA,PSA,CA,PCA))

    colnames(matriz_datos) = indicadores 
  }
  
   datatable(matriz_datos, class = 'display', options = list(pageLength = 20, dom = 'Bfrtp',
            autoWidth = TRUE, columnDefs = list(list(className = 'dt-right', targets = 1:6))))
}