muschellij2 / rscopus

Scopus Database API Interface to R
75 stars 16 forks source link

Getting full author name from AU-ID #3

Closed muschellij2 closed 6 years ago

muschellij2 commented 6 years ago

If you have the au_ids, you can get the author information, but first names are not always included rather than the initials for certain individuals: https://www.scopus.com/authid/detail.uri?authorId=22968535800

Using the current version of rscopus:

library(rscopus)
res_full = get_complete_author_info(au_id = "22968535800")
#> HTTP specified is:http://api.elsevier.com/content/search/author?query=AU-ID(22968535800)

full_names = res_full$content$`search-results`$entry[[1]]$`name-variant`
full_names = t(sapply(full_names, function(x) {
  unlist(x[c("given-name", "surname")])
}))

Using new functions/dev version

You need the dev version for this functionality:

devtools::install_github("muschellij2/rscopus")

Here I show how to do this with the new multi_author_info function:

au_ids = c("22968535800", "40462056100")
au_ids = paste(au_ids, collapse = ",")

info = multi_author_info(au_ids)
#> HTTP specified is:http://api.elsevier.com/content/author
lapply(info, `[[`, "other_names")
#> $`22968535800`
#>       doc-count initials indexed-name surname  
#>  [1,] "1"       "C.N.R." "Rao C."     "Rao"    
#>  [2,] "1"       "C.N.R." "Rao C."     "Rao"    
#>  [3,] "1484"    "C.N.R." "Rao C."     "Rao"    
#>  [4,] "28"      "C.N.R." "Rao C."     "Rao"    
#>  [5,] "3"       "C.N."   "Rao C."     "Rao"    
#>  [6,] "2"       "C.N.R." "Rao C."     "Rao"    
#>  [7,] "4"       NULL     "RAO CNR"    "RAO CNR"
#>  [8,] "1"       "C.N.R." "Rao C."     "Rao"    
#>  [9,] "1"       "C.N."   "Rao C."     "Rao"    
#> [10,] "1"       "C.N.R." "RAO C."     "RAO"    
#>       given-name                     
#>  [1,] "C. N.Ramchandra"              
#>  [2,] "Chintamani Nagesa Ramachandra"
#>  [3,] "C. N.R."                      
#>  [4,] "C. N.Ramachandra"             
#>  [5,] "C. N."                        
#>  [6,] "Chintamani N.R."              
#>  [7,] NULL                           
#>  [8,] "Cnr N.R."                     
#>  [9,] "Cnr N."                       
#> [10,] "C. N.R."                      
#> 
#> $`40462056100`
#>     
#> [1,]
muschellij2 commented 6 years ago

To get the original names:

t(sapply(info, function(x) x$info[ c("surname", "given-name")]))