2017-02-22 3 views
1

내 전체적인 목표는 공동 작성자 네트워크 그래프를 작성하는 것입니다. 필자는 PubMed ID 목록을 가지고 있으며, 이들은 공동 작성자 네트워크의 그래프 작성에 관심있는 유일한 출판물입니다. 내가 rentrez를 사용하여 내 쿼리에서 작성자 이름과 각 제휴를 함께 얻는 방법을 알아낼 수 없습니다. 두 가지 정보를 모두 얻을 수는 있지만 계열리스트는 내 저자 목록보다 약 300 개나 적습니다. 그래서 분명히 일부는 제휴를 제공하지 않았지만 누가 알아낼 수 없습니까. 작성자와 제휴를 검색하는 방법은 무엇입니까? [내 entrez_fetch 모두를했을 때, 그냥 난 아직도있는 저자에 속하는 제휴 알아낼 수 있도록 별도 나에게 저자와 소속의 목록을했다.]rentrez를 사용하여 pubmed에서 작성자와 소속을 분석하십시오.

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) 

이 모두 잘 작동하지만, 내가 할 수있는 자신의 길이가 다르기 때문에 어떤 저자가 어떤 소속 관계에 있는지 파악하지 못합니다.

도움을 주시면 감사하겠습니다. 감사!

+0

보십시오'xmlToDataFrame (trial [ "// Author"])' –

답변

1

당신은 뭔가를 시도 할 수 :

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

그것은 각 //Author 노드에 대해이 값을 얻어서 첫 번째 행에서 자신의 소속 저자의 두 번째 행의 마지막 이름을 반환합니다.

+0

고마워요! 필자가 작성한 코드를 실행했을 때 숫자 만 표시되는 이상한 포맷을 얻었습니다. 코드를 2 부분으로 나누었습니다 (저자와 저자는 정확히 같은 형식을 사용합니다). 그리고 이번에는 제휴를위한 국가 표준이 어디에 나타나는지 보여줍니다! – Shirley

+0

위대한, 출력 매트릭스입니다. 좀 더 읽기 쉬운 형식을 원한다면 행렬을 변수에 저장하고 ex에 대한 데이터를 저장 한 다음'as.data.frame (t (data)) '을 실행하여 한 줄에 하나의 작성자가있는 데이터 프레임으로 가져올 수 있습니다. 첫 번째 열에는 성의 이름과 두 번째 열의 소속이 표시됩니다. – NicE

+0

아, 그래, 완벽하게 작동했습니다! – Shirley

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가 어디에 있는지 알 수 있습니다.

관련 문제