使用来自 pubmedR 的 pmApiRequest 和 pmApi2df 检索到的不完整从属关系

问题描述

使用 pubmedR 查找期刊的作者单位时,我发现它们有时不完整。 下面是一个例子:

library(pubmedR)
journal <- "Advances in Clinical Chemistry[JO] AND 2021:2021[DP]"
article_count <- pmQueryTotalCount(query = journal,api_key = NULL)
article_count$total_count
# [1] 21
article_request <- pmApiRequest(query = journal,limit = article_count$total_count,api_key = NULL)
dfa <- pmApi2df(article_request,format = "bibliometrix")

在数据帧“dfa”的“C1”或“AF_UN”列中,我们可以观察到,例如对于第 2 行和第 3 行(PMID 34044912 和 34044911),尽管在相应的 Pubmed 附属机构(分别为冰岛和沙特阿拉伯)中很好地提到了该国家/地区,但并未出现该国家/地区。 https://pubmed.ncbi.nlm.nih.gov/34044912/ https://pubmed.ncbi.nlm.nih.gov/34044911/

如何检索详尽的从属关系?

解决方法

我最终发现从 Pubmed 文章中检索详尽从属关系的最佳方法是来自 ciakovx(感谢他):

# https://stackoverflow.com/questions/64103323/extracting-affiliation-information-from-pubmed-search-string-in-r/64109130#64109130
library(pubmedR)
library(purrr)
library(tidyr)

journal <- "Advances in Clinical Chemistry[JO] AND 2021:2021[DP]"
article_count <- pmQueryTotalCount(query = journal,api_key = NULL)
article_count$total_count
# [1] 21

article_request <- pmApiRequest(query = journal,limit = article_count$total_count,api_key = NULL)

dfa <- pluck(article_request,"data") %>% {
  tibble(
    pmid = map_chr(.,pluck,"MedlineCitation","PMID","text"),journal = map(.,"Article","Journal","ISOAbbreviation"),pubdate = map(.,"JournalIssue","PubDate","Year"),affiliation = map(.,"AuthorList","Author","AffiliationInfo","Affiliation")
  )
}
dfa <- as.data.frame(dfa)