使用 rentrez 从 pubmed 解析作者和隶属关系

Using rentrez to parse out author and affiliation from pubmed

我的总体目标是构建一个共同作者网络图。我有一个 PubMed ID 的列表,这些是我唯一感兴趣的关于共同作者网络图表的出版物。我无法弄清楚如何使用 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)

这一切都很好,但我无法弄清楚哪些作者属于哪些隶属关系,因为他们的长度不同。

如有任何帮助,我们将不胜感激。谢谢!

您可以尝试类似的方法:

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

它 returns 在第一行是作者的姓氏,在第二行是他们的隶属关系,方法是为每个 //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 的格式并且它有效——我可以看到 NA 的隶属关系现在在哪里。

我参考了@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"]])
    })
))

谢谢你让我走上了正确的道路。