2017-08-03 74 views
0

我有數據幀的有40802個基因名稱的列表,我有14000條信息的數據幀。文章信息包含文章,摘要,日,月,年。計數頻率和創建情節

我已經改變了日期爲正常格式,抽象的人物。

我想有X在時間上的情節,基因名字的頻率出現在抽象的。 EG

| Date  | Gene Name | Frequency | 
|------------|-----------|-----------| 
| 2017-03-20 | GAPDH  | 5   | 
| 2017-03-21 | AKT  | 6   | 

基本上,我想知道最經常刊登在過去100天內的基因名稱,並有一個時間表,看看說genenames的演變。像趨勢一樣。

library(RISmed) 

##Research the query - can be anything relevant to protein expression. 
##Multiple research not tested yet 

search_topic <- 'protein expression' 

##Evaluate the query with reldate = days before today, retmax = maximun number of returned results 

search_query <- EUtilsSummary(search_topic, retmax=15000, reldate = 100) 
##explore the outcome 

summary(search_query) 

##get the ids for tall the queries to get the articles 

QueryId(search_query) 
##get all the records associated with the ID - THIS TAKES LOOONG TIME 

records<- EUtilsGet(search_query) 

##Analyze the structure 
str(records) 

summary(records) 

##Create a data frame with article/abstract/date 

pubmed_data <- data.frame('Title'=ArticleTitle(records),'Abstract'=AbstractText(records), 
          "Day"=DayPubmed(records), "Month" = MonthPubmed(records), "Year"=YearPubmed(records)) 
##explore the data 
head(pubmed_data,1) 
##gene names 
genename <- read.csv("genename.csv", header = T, stringsAsFactors = F) 

##remove any NA tittles 

pubmed <-pubmed_data[-which(is.na(pubmed_data$Title)), ] 
##Coerce the date to YYYY-MM-DD 

pubmed$Date <- as.Date(paste(pubmed$Day , pubmed$Month , sep = ".") , format = "%d.%m") 

我讀了很多,無法弄清楚如何找到genemane [1,1]內pubmed$Abstract, 和時間計數就出現的時間。 製作的情節,其中X是過去100天,行PROT將是genenames, 的頻率和傳說將是genename。所以可以觀察到一種趨勢。

我會很感激的任何想法如何可以做到這一點。

我試過tm,並嘗試了很多不同的東西,但仍然碰壁。我的觀念錯了嗎?

回答

0
# from: https://stackoverflow.com/questions/45485701/count-frequency-of-words-in-text-and-create-plot 
# get some text 
txt <- c("I have a list of data frame with 40802 gene names and I have data frame with 14000 article information. 
The article information contains Article, Abstract, Day, Month, Year.I have transformed the date into normal format, 
and the abstract as character. I want to have a plot of X in time, and the frequency of the gene names appears in the abstract. 
Basically, I want to know the gene names most frequently published in the last 100 days and have a timeline to see the evolution of said genenames. 
Something like a trend.") 

# cut to ngramms for dataframe example 
txt <- strwrap(x = txt,width = 20) 
# create some data frame 
pubmed_data <- data.frame(Title=abbreviate(names.arg = txt,minlength = 5,method = "left.kept",named = F),Abstract=txt,stringsAsFactors = F) 
pubmed_data 

# tm package 
library(tm) 
wrds <- termFreq(doc = pubmed_data$Abstract,control = list(tolower=TRUE,removePunctuation=TRUE,removeNumbers=TRUE)) 
wrds <- sort(unclass(wrds),decreasing = T) 
wrds <- data.frame(tokens=names(wrds),n=as.integer(wrds)) 
wrds$tokens <- reorder(wrds$tokens,wrds$n) 

library(ggplot2) 
ggplot(data = wrds,aes(x = tokens,y = n,fill=n))+geom_bar(stat="identity")+scale_y_continuous(breaks = 1:max(wrds$n))+ 
    coord_flip() 


# tidy packages 
library(tidytext) 
library(dplyr) 
wrds2 <- pubmed_data %>% select(-Title) %>% unnest_tokens(input = "Abstract",output = "tokens",to_lower = T) %>% 
    filter(grepl(pattern="\\D+",x=.$tokens)) %>% group_by(tokens) %>% 
    count %>% ungroup %>% mutate(tokens=reorder(tokens,n)) 

ggplot(data = wrds2,aes(x = tokens,y = n,fill=n))+geom_bar(stat="identity")+scale_y_continuous(breaks = 1:max(wrds$n))+ 
    coord_flip()