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

时间:2017-02-22 17:56:37

标签: r xml author pubmed rentrez

我的总体目标是建立共同作者网络图。我有一份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)

这一切都运作正常,但由于长度不同,我无法弄清楚哪些作者与哪些隶属关系。

非常感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:1)

您可以尝试以下方式:

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

通过获取每个//Author节点的这些值,它在第一行中返回作者的姓氏,在第二行中返回它们的从属关系。

答案 1 :(得分:0)

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的联盟现在在哪里。

答案 2 :(得分:0)

我接受了@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"]])
    })
))

感谢您使我走上正确的道路。