Использование Rentrez для анализа автора и принадлежности от опубликованных

Моя общая цель - построить граф сети соавторов. У меня есть список идентификаторов PubMed, и это единственные публикации, которые меня интересуют для построения графика сети соавторов. Я не могу понять, как собрать вместе имена авторов и соответствующие филиалы в моем запросе с помощью Rentrez. Я могу получить обе информации, но мой список аффилиаций примерно на 300 меньше моего списка авторов, поэтому, очевидно, некоторые из них не предоставили аффилированных лиц, но я не могу понять, кто. Любой способ поиска автора и принадлежности объединены? [Когда я сделал и то, и другое в своем entrez_fetch, он просто дал мне список авторов и аффилированных лиц отдельно, поэтому я до сих пор не могу понять, какие аффилиации принадлежат каким авторам.]

library(tidyverse)
library(rentrez)
library(XML)

trial<-entrez_fetch(db="pubmed", id=pub.list$PMID, rettype="xml", parsed=TRUE)
affiliations<-xpathSApply(trial, "//Affiliation", xmlValue)
first.names<-xpathSApply(trial, "//Author/ForeName", xmlValue)

Все это прекрасно работает, но я не могу понять, какие авторы с какими филиалами, так как их длина различна.

Любая помощь будет принята с благодарностью. Спасибо!

3 ответа

Решение

Вы можете попробовать что-то вроде:

xpathSApply(trial, "//Author", function(x) {
  author_name <- xmlValue(x[["LastName"]])
  author_affiliation <- xmlValue(x[["AffiliationInfo"]][["Affiliation"]])
  c(author_name,author_affiliation)
  })

Возвращает в первом ряду фамилию авторов, а во втором ряду их принадлежность, получая эти значения для каждого //Author узел.

last.name<-xpathSApply(trial, "//Author", function(x) {
  author_name <- xmlValue(x[["LastName"]])})

affiliation<-xpathSApply(trial, "//Author", function(x) {
  author_affiliation <- xmlValue(x[["AffiliationInfo"]][["Affiliation"]])})

Это то, чем я в конечном итоге воспользовался, следуя формату NicE, и это сработало - я вижу, где сейчас находятся членские собрания АН.

Я взял код @NicE и комментарии @Shirley и написал этот код:

lastname_affiliation <-data.frame(cbind(
    xpathSApply(trial, "//Author", function(x) {
        author_name <- xmlValue(x[["LastName"]])
    }), 
    xpathSApply(trial, "//Author", function(x) {
        author_affiliation <- xmlValue(x[["AffiliationInfo"]][["Affiliation"]])
    })
))

Спасибо, что поставили меня на правильный путь.

Другие вопросы по тегам