用R语言检索文献并简单整理信息

起因:在工作中需要阅读文献,其中的一些基本信息,例如文章作者,发表刊物,影响因子等,自己懒,不想一一整理

基本利用思路:利用R语言中的RISmed包检索并进行返回需要的基本信息,如第一作者,责任作者,作者单位,发表期刊,这些都是RISmed包中既有的函数可以得到的,然后利用下载的期刊影响因子列表提取IF,最后把上述信息输出成为excel表格。

上述功能很多软件都能做,我想以上面为基础做下面的事:

    1. 筛选最相关的研究:pubmed的结果大家都知道是比较全面的,但是有时候冗余比较多,如何进一步分析自动筛选最相关的研究是一个问题。

    2. 进一步筛选引用了某一论文的论文。

    3. 通过文本分析,得到相关研究的发展趋势是另外一个问题。这两个问题涉及到各个专业的特性,不是仅仅用一下文本分析,词频等等就可以的。我想可能与专业论文撰写习惯,专业词汇表的建立,专业词汇的权重等等诸多问题有关。之后再研究。

现在的脚本很简单,但是好歹现在解决了第一个问题:我拿到文献了!!(撒花,撒花……小白做成了一点小事后莫名的开心)

脚本分享一下。我不是搞软件的,也不是专门做情报分析的,纯粹个人恶趣味,非要把其他软件能做的事情用R做一下。因为其实很简单,学习交流用。


##说明:采用RISmed包,检索pubmed,关键词可根据pubmed检索技巧填写。

##(cont)可设置检索时间范围,可输出2018影响因子,主题词,等信息

##(cont)与在pubmed上检索比对,最新的几篇文献检索不到,其他的基本类似

##(cont)可输出每次应用的log

library(tidyverse)

library(RISmed)

library(openxlsx)

library(lubridate)

library(readxl)

#searching

#example for key words, myeloma[ti] jones[au]

#ab, ad:address, ta:journal name

#logic: AND OR NOT

purpose <- "training"

key_words <- c("pinkeye")

date_range_min = 2015

latest <- year(ymd(Sys.Date()))

date_range_max = latest

res <- EUtilsSummary(query = key_words, type = "esearch", db = "pubmed", datetype = "ppdt",

                    mindate = date_range_min, maxdate = date_range_max, retmax = 500)

query_word <- QueryTranslation(res)

query_word

number <- QueryCount(res)

number

#retreival journal name####

journal <- ISOAbbreviation(EUtilsGet(res))

full_journal <- tolower(Title(EUtilsGet(res)))

#impact factor####

if2018 <- read_excel("retrieval papers from ncbi/2018年最新影响因子.xlsx",

                    col_types = c("numeric", "text", "text",

                                  "numeric", "numeric"))

if2018$Total_Cites <- as.numeric(gsub(",","",if2018$Total_Cites))

if2018$Full_Journal_Title <- tolower(if2018$Full_Journal_Title)

if2018_final <- left_join(data.frame(full_journal), if2018, by = c("full_journal" = "Full_Journal_Title"))

#author####

authors <- Author(EUtilsGet(res))

author_1st <- c()

l <- length(authors)

for (i in 1:l) {

  names <- authors[[i]][authors[[i]]$order == 1,]

  name <- paste(names$LastName, names$Initials, sep = ",")

  author_1st <- c(author_1st, name)

}

author_last <- c()

for (i in 1:l) {

  total_author <- nrow(authors[[i]])

  names <- authors[[i]][authors[[i]]$order == total_author,]

  name <- paste(names$LastName, names$Initials, sep = ",")

  author_last <- c(author_last, name)

}

#titles####

titles <- ArticleTitle(EUtilsGet(res))

#affiliations####

affiliations <- Affiliation(EUtilsGet(res))

affiliation_1st <- c()

for (i in 1:l) {

  aff <- affiliations[[i]][1]

  affiliation_1st <- c(affiliation_1st, aff)

}

#pub time####

year_pub <- YearPubmed(EUtilsGet(res))

#citation times####

cited_num <- Cited(EUtilsGet(res))

#article ID####

article_id <- ArticleId(EUtilsGet(res))

#mesh####

meshes <- Mesh(EUtilsGet(res))

mesh <- c()

for (i in 1:l) {

  if (is.na(meshes[[i]])) {

    mesh2 <- NA

    mesh <- c(mesh, mesh2)

  }

  else {

    mesh1 <- meshes[[i]]

    n <- nrow(mesh1)

    mesh2 <- mesh1$Heading[1]

    for (j in 2:n) {

      mesh2 <- paste(mesh2, mesh1$Heading[j], sep = ", ")

    }

    mesh <- c(mesh, mesh2)

  }

}

#combine all####

all_output <- data.frame(journal, year_pub, IF = if2018_final$Journal_Impact_Factor,author_1st, author_last, cited_num,

                        affiliation_1st, titles, mesh, article_id)

all_output %>% View()

path <- paste(key_words, ".xlsx")

write.xlsx(all_output, path)

#Log file####

Sys.Date()

purpose

key_words

query_word

number

log_exist <- read_excel("log for RISmed search.xlsx")

log_exist$date <- as.Date(log_exist$date)

log_present <- data.frame(date = Sys.Date(), purpose, key_words, query_word, number)

log_present <- bind_rows(log_exist, log_present)

write.xlsx(log_present, "log for RISmed search.xlsx", overwrite = T)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • power投稿指南3 Use of wordprocessing software It is important...
    鸭梨山大哎阅读 2,819评论 0 3
  • 有志者事竟成,无志者事事空。做人自然应当是做前者,但不知为何还是有很多人愿意选择后者。 站在山脚,你能...
    口述笔录阅读 731评论 0 6
  • 从古至今,很多经典的诗句与远方有关。 远方有诱人的前程,荣归故里和衣锦还乡是多少人的梦想。 远方有不一样的风景...
    向荣洵阅读 3,070评论 20 14
  • “你在哪?” “我在高速公路上。” 我挂了电话,发去消息, “那给你买的火车票还退不退了。你这事怎么回事,要回来也...
    我的独一无二Sylvia阅读 1,248评论 4 12
  • 闹钟终于在清晨的05:35分响起来,迷瞪了一会5:45起来,或许是昨夜七夕喝的饮料太多了,所以才起来。 迷迷糊糊的...
    一个景天阅读 162评论 1 2