从R中的数据框创建wordcloud

从R中的数据框创建wordcloud,r,frequency,R,Frequency,我制作了一个示例数据帧。我试着从Projects列中创建一个wordcloud Hours<-c(2,3,4,2,1,1,3) Project<-c("a","b","b","a","c","c","c") Period<-c("2014-11-22","2014-11-23","2014-11-24","2014-11-22", "2014-11-23", "2014-11-23", "2014-11-24") cd=data.frame(Project,Hours,Peri

我制作了一个示例数据帧。我试着从Projects列中创建一个wordcloud

Hours<-c(2,3,4,2,1,1,3)
Project<-c("a","b","b","a","c","c","c")
Period<-c("2014-11-22","2014-11-23","2014-11-24","2014-11-22", "2014-11-23", "2014-11-23", "2014-11-24")
cd=data.frame(Project,Hours,Period)

我做错了什么?

我认为您缺少
freq
参数。您希望创建一列,指示每个项目发生的频率。一、 因此,使用
dplyr
包中的
count
转换数据

library(dplyr)
library(wordcloud)

cd <- data.frame(Hours = c(2,3,4,2,1,1,3),
                 Project = c("a","b","b","a","c","c","c"),             
                 Period = c("2014-11-22","2014-11-23","2014-11-24",
                            "2014-11-22", "2014-11-23", "2014-11-23",
                            "2014-11-24"),
                 stringsAsFactors = FALSE)

cd2 <- count(cd, Project)

#  Project n
#1       a 2
#2       b 2
#3       c 3

wordcloud(words = cd2$Project, freq = cd2$n, min.freq = 1)
库(dplyr)
图书馆(wordcloud)

cd如果指定字符列,则函数会在幕后为您创建语料库和文档术语矩阵。问题在于
tm
pacakge中的TermDocumentMatrix函数的默认行为是,它只跟踪长度超过三个字符的单词(同时,它会删除“停止单词”,因此会删除像“a”这样的值)。所以如果你把你的样品改成

Project<-c("aaa","bbb","bbb","aaa","ccc","ccc","ccc")
library(dplyr)
library(wordcloud)

cd <- data.frame(Hours = c(2,3,4,2,1,1,3),
                 Project = c("a","b","b","a","c","c","c"),             
                 Period = c("2014-11-22","2014-11-23","2014-11-24",
                            "2014-11-22", "2014-11-23", "2014-11-23",
                            "2014-11-24"),
                 stringsAsFactors = FALSE)

cd2 <- count(cd, Project)

#  Project n
#1       a 2
#2       b 2
#3       c 3

wordcloud(words = cd2$Project, freq = cd2$n, min.freq = 1)
Project<-c("aaa","bbb","bbb","aaa","ccc","ccc","ccc")
corpus <- Corpus(VectorSource(cd$Project))
corpus <- tm_map(corpus, removePunctuation)
# corpus <- tm_map(corpus, function(x) removeWords(x, stopwords()))
tdm <-TermDocumentMatrix(corpus, control=list(wordLengths=c(1,Inf)))
freq <- slam::row_sums(tdm)
words <- names(freq)    

wordcloud(words, freq, min.freq=1)
tbl <- table(cd$Project)
wordcloud(names(tbl), tbl, min.freq=1)