2016-12-01 1 views
0

Я работаю над wordcloud в R, и до сих пор мне удавалось только с базовым материалом, однако я хочу показать, что я хочу показать облако слов определенного места. Например, если у меня есть текст, какWordcloud столбца в R на основе другого столбца

     TEXT                 LOCATION 
    True or false? link(#Addition, #Classification)           NewYork,USA 
    Gene deFuser: detecting gene fusion events from protein sequences #bmC#bioinformatics Norwich,UK 
    Biologists do have a sense of humor, especially computational bio people     France 
    Semantic Inference using #Chemogenomics Data for Drug Discovery       London,UK 

здесь является основным кодом Wordcloud Я использую

library(tm) 
library(SnowballC) 
library(wordcloud) 

DATA<-c('True or false? link(#Addition, #Classification) ','Gene deFuser: detecting gene fusion events from protein sequences #bmC#bioinformatics',' Biologists do have a sense of humor, especially computational bio people','Semantic Inference using #Chemogenomics Data for Drug Discovery') 
Location<-c('NewYork,USA','Norwich,UK',' France','London,UK') 

jeopQ<-data.frame(DATA,Location) 

jeopCorpus <- Corpus(VectorSource(jeopQ$DATA)) 
jeopCorpus <- tm_map(jeopCorpus, content_transformer(tolower)) 

jeopCorpus <- tm_map(jeopCorpus, removePunctuation) 
jeopCorpus <- tm_map(jeopCorpus, PlainTextDocument) 
jeopCorpus <- tm_map(jeopCorpus, removeNumbers) 
jeopCorpus <- tm_map(jeopCorpus, removeWords, stopwords('english')) 
jeopCorpus <- tm_map(jeopCorpus, stemDocument) 
myDTM = TermDocumentMatrix(jeopCorpus, control = list(minWordLength = 1)) 

m = as.matrix(myDTM) 

v = sort(rowSums(m), decreasing = TRUE) 
set.seed(4363) 
wordcloud(names(v), v,max.words =100,min.freq=3,scale=c(4,0.1), random.order = FALSE,rot.per=.5,vfont=c("sans serif","plain"),colors=palette()) 

Я хочу что-то вроде отдельного слова для облака Места, имеющее «США» в нем и места, имеющие " Великобритания ", и это отдельное wordcloud для ФРАНЦИИ, возможно ли это?

ответ

0
jeopQ<-data.frame(DATA,Location) 

# Clean Location 
jeopQ$Location <- sub('.*,\\s*','', jeopQ$Location) 

# Loop 
for(i in unique(jeopQ$Location)){ 
    jeopCorpus <- Corpus(VectorSource(jeopQ$DATA[jeopQ$Location==i])) 
    jeopCorpus <- tm_map(jeopCorpus, content_transformer(tolower)) 

    jeopCorpus <- tm_map(jeopCorpus, removePunctuation) 
    jeopCorpus <- tm_map(jeopCorpus, PlainTextDocument) 
    jeopCorpus <- tm_map(jeopCorpus, removeNumbers) 
    jeopCorpus <- tm_map(jeopCorpus, removeWords, stopwords('english')) 
    jeopCorpus <- tm_map(jeopCorpus, stemDocument) 
    myDTM = TermDocumentMatrix(jeopCorpus, control = list(minWordLength = 1)) 

    m = as.matrix(myDTM) 

    v = sort(rowSums(m), decreasing = TRUE) 
    set.seed(4363) 
    wordcloud(names(v), v,max.words =100,min.freq=3,scale=c(4,0.1), random.order = FALSE,rot.per=.5,vfont=c("sans serif","plain"),colors=palette()) 

} 

enter image description here enter image description here enter image description here

+1

Это просто отлично! Спасибо! – hyeri

+0

@hyeri Счастливые помочь –

Смежные вопросы