Html 从R中的PubMed搜索字符串中提取从属关系信息
我需要一些帮助从R中的PubMed搜索字符串中提取从属关系信息。我已经成功地从单个PubMed ID XML中提取了从属关系信息,但是现在我有了一个包含多个术语的搜索字符串,我需要从中提取从属关系信息,希望随后创建一个包含以下列的数据框架:PMID、author、country、state等 这是我目前的代码:Html 从R中的PubMed搜索字符串中提取从属关系信息,html,r,xml,dataframe,pubmed,Html,R,Xml,Dataframe,Pubmed,我需要一些帮助从R中的PubMed搜索字符串中提取从属关系信息。我已经成功地从单个PubMed ID XML中提取了从属关系信息,但是现在我有了一个包含多个术语的搜索字符串,我需要从中提取从属关系信息,希望随后创建一个包含以下列的数据框架:PMID、author、country、state等 这是我目前的代码: my_query <- (PubMed Search String) my_entrez_id <- get_pubmed_ids(my_query) my_abstract
my_query <- (PubMed Search String)
my_entrez_id <- get_pubmed_ids(my_query)
my_abstracts_txt <- fetch_pubmed_data(my_entrez_id, format = "abstract")
my\u query您是否尝试过pubmedR
软件包
所有作者数据都包含在嵌套列表中,author$AffiliationInfo
列表中(请注意,这是一个列表,因为一个作者可以有多个从属关系)
=================================================
根据评论进行编辑:
首先构造您的请求URL。确保用您的电子邮件地址替换&电子邮件:
library(httr)
library(xml2)
mypmids <- c("32946812", "32921748", "32921727", "32921708", "32911500",
"32894970", "32883566", "32880294", "32873658", "32856805",
"32856803", "32820143", "32810084", "32809963", "32798472")
my_query <- paste0("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=",
mypmids,
"&retmode=xml&email=MYEMAIL@MYDOMAIN.COM")
接下来,我们使用read\u xml()
中的content()
解析请求。请注意,我们正在分析结果
:
my_resp <- map(my_req, function(z) {
read_xml(content(z$result,
as = "text",
encoding = "UTF-8"))
})
您是否试用过pubmedR
软件包
所有作者数据都包含在嵌套列表中,author$AffiliationInfo
列表中(请注意,这是一个列表,因为一个作者可以有多个从属关系)
=================================================
根据评论进行编辑:
首先构造您的请求URL。确保用您的电子邮件地址替换&电子邮件:
library(httr)
library(xml2)
mypmids <- c("32946812", "32921748", "32921727", "32921708", "32911500",
"32894970", "32883566", "32880294", "32873658", "32856805",
"32856803", "32820143", "32810084", "32809963", "32798472")
my_query <- paste0("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=",
mypmids,
"&retmode=xml&email=MYEMAIL@MYDOMAIN.COM")
接下来,我们使用read\u xml()
中的content()
解析请求。请注意,我们正在分析结果
:
my_resp <- map(my_req, function(z) {
read_xml(content(z$result,
as = "text",
encoding = "UTF-8"))
})
嗨,谢谢你的快速回复!我只是尝试了一下你的建议,但由于某种原因,它根本没有接收到我的搜索字符串。我不确定它是否太长,因此我将继续调整代码/搜索字符串。我的查询也是多个“或”而不是“和”,搜索字符串中可能有太多的内容?再次感谢!你能在这里发布你的搜索字符串吗?嗨,我已经能够从搜索字符串中导出PMID,作为解决这个问题的另一种方法。这大约是10000个PMID,但前几个是30361262 31203996 31141631 31028669 30420752 29601269 31628431 27959731 30499168,如果这有帮助的话!我一直在尝试这样做,因为它似乎类似于在线看到的PubMed R示例。那么你的最终目标是什么?您想在一列中包含pmid,在另一列中包含作者从属关系吗?是的,我之前创建了一个数据框,其中包含:pmid:作者姓名:中心:国家:州我想复制类似的内容。您好,感谢您的快速回复!我只是尝试了一下你的建议,但由于某种原因,它根本没有接收到我的搜索字符串。我不确定它是否太长,因此我将继续调整代码/搜索字符串。我的查询也是多个“或”而不是“和”,搜索字符串中可能有太多的内容?再次感谢!你能在这里发布你的搜索字符串吗?嗨,我已经能够从搜索字符串中导出PMID,作为解决这个问题的另一种方法。这大约是10000个PMID,但前几个是30361262 31203996 31141631 31028669 30420752 29601269 31628431 27959731 30499168,如果这有帮助的话!我一直在尝试这样做,因为它似乎类似于在线看到的PubMed R示例。那么你的最终目标是什么?你想在一列中有一个包含pmid的数据框,在另一列中有作者从属关系吗?是的,我以前创建过一个包含:pmid:作者姓名:中心:国家:州的数据框,我想复制类似的内容。
my_resp <- map(my_req, function(z) {
read_xml(content(z$result,
as = "text",
encoding = "UTF-8"))
})
my_pm_list <- map(my_resp, function (z) {
my_xml <- xml_child(xml_child(z, 1), 1)
pmid <- xml_text(xml_find_first(my_xml, "//PMID"))
authinfo <- as_list(xml_find_all(my_xml, ".//AuthorList"))
return(list(pmid, authinfo))
})
myauthinfo <- map(my_pmids, function(z) {
auth <- z[[2]][[1]]
})
mytibble <- myauthinfo %>% {
tibble(
lastname = map_depth(., 2, pluck, "LastName", 1, .default = NA_character_),
firstname = map_depth(., 2, pluck, "ForeName", 1, .default = NA_character_),
affil = map_depth(., 2, pluck, "AffiliationInfo", "Affiliation", 1, .default = NA_character_)
)
}
my_unnested_tibble <- mytibble %>%
bind_cols(pmid = map_chr(my_pm_list, pluck, 1)) %>%
unnest(c(lastname, firstname, affil))