Rで解析:PubMedでの情報収集が簡単です「easyPubMed」パッケージ


投稿日: Rの解析に役に立つ記事 ,

NCBIデータベースをRから操作するパッケージはいくつか存在しますが、本パッケージはPubMedデータベースから情報を収集するのに特化したパッケージです。

操作が非常に簡単なので、すぐに使いこなすことができると思います。取得データはxmlファイルなので「XML」パッケージを利用し抽出・加工が可能です。

実行コマンドでは検索クエリに”r statistical software”を指定し、取得したデータをGoogleスプレッドシートへアップロードする例を紹介します。

・「googlesheets」パッケージの紹介
  https://www.karada-good.net/analyticsr/r-136/

パッケージバージョンは1.3。実行コマンドはR version 3.2.2で確認しています。


パッケージのインストール

下記、コマンドを実行してください。

#パッケージのインストール
install.packages("easyPubMed")

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("easyPubMed")

#検索クエリを指定
#pubmedの検索タグが使用可能です
#参考:https://ja.wikipedia.org/wiki/MEDLINE
SetQuery <- "r statistical software"

#PubmedIdを取得:getPubmedIdsコマンド
PubMedID <- getPubmedIds(pbmedQuery = SetQuery)

#PubmedIdを元にデータを取得:fetchPubmedDataコマンド
#取得開始の番号:retstartコマンド
#取得終了の番号:retmaxコマンド
#最新10の論文データを取得
#結果はXMLで取得
GetResult <- fetchPubmedData(pubmedIdList = PubMedID, retstart = 0, retmax = 10)

###取得データを整形#####
#雑誌名を取得
AbbreData <- unlist(xpathApply(GetResult, "//ISOAbbreviation", xmlValue))
#doiを取得
#タグが存在しない場合はNA値を結果に代入
DOIData <- unlist(xpathApply(GetResult, "//Article",
                             function(x){
                               GetData <- unlist(xpathApply(x, "ELocationID[@EIdType='doi']", xmlValue))
                               ifelse(is.null(GetData), GetData <- "NA",
                                      xpathSApply(x, "ELocationID[@EIdType='doi']",
                                                  function(x) paste(xmlSApply(x, xmlValue), collapse = ", ")))}))
#論文タイトルを取得
TitleData <- unlist(xpathApply(GetResult, "//ArticleTitle", xmlValue))
#出版年月日を取得
PubData <- unlist(xpathApply(GetResult, "//PubDate",
                             function(x) paste(xmlSApply(x, xmlValue), collapse = ".")))
#キーワードを取得
#タグが存在しない場合はNA値を結果に代入
KeyWordData <- unlist(xpathApply(GetResult, "//MedlineCitation",
                                 function(x){
                                   GetData <- unlist(xpathApply(x, "KeywordList", xmlValue))
                                   ifelse(is.null(GetData), GetData <- "NA",
                                          xpathSApply(x, "KeywordList",
                                                      function(x) paste(xmlSApply(x, xmlValue), collapse = ", ")))}))
#アブストラクトを取得
#タグが存在しない場合はNA値を結果に代入
AbstData <- unlist(xpathApply(GetResult, "//Article",
                                 function(x){
                                   GetData <- unlist(xpathApply(x, "Abstract", xmlValue))
                                   ifelse(is.null(GetData), GetData <- "NA",
                                          xpathSApply(x, "Abstract",
                                                      function(x) paste(xmlSApply(x, xmlValue), collapse = ", ")))}))

#データの結合
ResultData <- data.frame(TitleData, AbstData, AbbreData, PubData, DOIData, KeyWordData)

###参考:Googleスプレッドシートへアップロード#####
#googlesheetsパッケージは下記URLの記事を参考にしてください
#https://www.karada-good.net/analyticsr/r-136/
#パッケージの読み込み
library("googlesheets")
#Googleスプレッドシートへログイン
gs_auth(new_user = TRUE)
#データをアップロード
gs_new(title = "PubMedData", input = ResultData, trim = TRUE)

アップロード例

easyPubMed


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク