2017-02-22 13 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ノードに対してこれらの値を取得することによって、最初の行で自分の所属作家の2行目の最後の名前を返します。

+0

ありがとう!コードを書いたときにコードを実行したとき、数字だけが表示されていた奇妙なフォーマットが得られました。私はコードを2つのパートに分けました(著者の場合は1つ、提携の場合は同じフォーマットを使用しています)。そしてそれらを組み合わせて、今回は提携のためのNAsが表示されます。 – Shirley

+0

グッド出力は行列です。より読みやすい形式が必要な場合は、行列を変数に、exのデータを格納してから、 'as.data.frame(t(data))'を実行して、行ごとに1人の作成者を持つデータフレームとして取得できます。最初の列には姓と2番目の所属が含まれています。 – 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がどこにあるのか分かります。

関連する問題