R科研作图学习小组

http://group.keyangou.com/RGraph
组长: 管理员:
  • 访问次数:15616
  • 小组等级:8
  • 话题:567
  • 回答:34
  • 签到:357
  • 小组排名:
  • R2-01-第二期-2 R读取pubmed存入mysql数据库

    木萱小主 发布于:2018.01.24

    任务1

    完成mysql安装,并调试。尝试导入数据

    con <- dbConnect(MySQL(),host="localhost",dbname="rdb",user="root",password="")
    t_demo<-data.frame(a=seq(1:10), b=letters[1:10], c=rnorm(10))
    t_demo
    dbWriteTable(con, "t_demo", t_demo)

    1.jpg

    任务2

    #任务2.获得cell杂志2017年所有文章的id
    install.packages("RISmed")
    library(RISmed)
    cell2017<-EUtilsSummary("cell[TA] AND 2017[DP]")
    data<-QueryId(cell2017)
    data #获得全部的ID
    pmids<-paste(data,sep = "",collapse=","),字符串用分号间隔

    任务3 #任务3:通过efetch接口获取title和abstract
    library(RMySQL)
    library(xml2)
    library(httr)
    postFetchUrl<-'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?'
    r2 <- POST(postFetchUrl,body = list(db='pubmed',id=pmids,retmode='xml'))
    stop_for_status(r2)
    data2=content(r2, "parsed")
    article=xml_children(data2)
    count=length(article)
    cnt=1
    while(cnt<=count){title=xml_find_first(article[cnt],".//ArticleTitle")
    abstract=xml_find_first(article[cnt],".//AbstractText")
    write.table(print(xml_text(title)),file='D:/a.txt',row.names=F,quote=F,append=T)
    write.table(print(xml_text(abstract)),file='D:/b.txt',row.names=F,quote=F,append=T)
    cnt = cnt + 1
    }

    先用txt做一个吧,RMySQL没整出来,有空再接着做

    a<-read.csv(file.choose(),header=T)
    b<-read.csv(file.choose(),header=T)
    c<-data
    article<-data.frame(pmid=c,title=a,abstract=b)
    con<-dbConnect(MySQL(),host="localhost",dbname="rdb",user="root",password="")
    dbSendQuery(con,'SET NAMES utf8')
    dbWriteTable(con, "article2", article) #先弄一个article2 以后用RMySQL再弄article
    2.jpg

     

     
    2条评论 130浏览 邀请回答

    真·科研狗 回答于:2018年01月26日 14:07:271楼

     北京大学 医学部基础医学院 细胞生物学 博士 

    RISmed可以简单的获得pubmed的数据,建议学习下不用这个包的方法,因为这个包也只是针对pubmed,如果是另外一个接口网站呢?还有一个问题,这个获取ID以及title和abstract是一次性获取不?如果让你获取的记录有1000万个呢,一次性获取肯定不可行吧。学习下循环分页获取,这对后面大量的数据处理是有用的

    木萱小主 回答于:2018年01月26日 16:16:392楼

    北京 北京协和医学院 微生物与生化药学博士 

    恩恩,是的呢,有点投机取巧了,一会就用另一个方法弄一下,之前没捣鼓出来。


    小组告示

    科研狗 2012-2016 京ICP备16006621 科研好助手,专业的科研社交共享平台