如何计算R中的文档频率?

如何计算R中的文档频率?,r,R,我有一个名为“pertanian”的数据框: 根据上面的术语文档矩阵,我想制作一个文档频率,如下所示: term DOCS 1 DOCS 2 DOCS 3 DOCS 4 DOCS 5 dimakan 0 1 1 1 0 diserbu 0 0 1 1 1 jagung 2 1 1 1 1 kacang 0

我有一个名为“pertanian”的数据框:

根据上面的术语文档矩阵,我想制作一个文档频率,如下所示:

term     DOCS 1  DOCS 2  DOCS 3  DOCS 4  DOCS 5
dimakan    0       1       1       1       0
diserbu    0       0       1       1       1
jagung     2       1       1       1       1
kacang     0       1       1       1       1
kelinci    0       1       1       1       1
ketimun    0       1       1       1       1
ladang     0       0       1       1       1
rusak      0       1       1       1       1
seumur     1       0       0       0       0
tanaman    1       1       1       1       1
Term        DF
dimakan     3 
diserbu     3
jagung      5
kacang      4
kelinci     4
ketimun     4
ladang      3
rusak       4
seumur      1
tanaman     5
我尝试过以下代码:

myCorpus <- Corpus(VectorSource(pertanian$TEXT))
myCorpus2 <- tm_map(myCorpus, PlainTextDocument)
tdm <- TermDocumentMatrix(myCorpus2)
temp<-inspect(tdm)
colnames(temp) <- paste("DOCS", pertanian$DOCS)
Doc.Freq<-data.frame(apply(temp, 1, sum))
#rename column name
Doc.Freq <- cbind(Term = rownames(Doc.Freq), Doc.Freq)
row.names(Doc.Freq) <- NULL
names(Doc.Freq)[names(Doc.Freq)=="apply.temp..1..sum."] <- "DF"
像这样的东西

注意:这里我假设您想要的输出有一个错误,并且kacang出现在5个文档中的4个文档中

library(tm)
library(dplyr)

v <- Corpus(VectorSource(TEXT))

data.frame(inspect(TermDocumentMatrix(v))) %>%
  add_rownames() %>%
  mutate(DF = rowSums(.[-1] >= 1)) %>%
  select(Term = rowname, DF)
或者你可以简单地做:

transform(rowSums(inspect(TermDocumentMatrix(v)) >= 1))
试试这个:

dd <- strsplit(as.character(TEXT),' ') 

> transform(table(unlist(lapply(dd,unique))))
#      Var1 Freq
#1  dimakan    3
#2  diserbu    3
#3   jagung    5
#4   kacang    4
#5  kelinci    4
#6  ketimun    4
#7   ladang    3
#8    rusak    4
#9   seumur    1
#10 tanaman    5
dd转换(表(unlist(lappy(dd,unique)))
#Var1频率
#1迪马坎3
#2迪瑟布3
#3贾贡5
#4卡仓4
#5科林奇4
#6凯蒂蒙4
#7拉丹3
#8 rusak 4
#9 seumur 1
#10塔纳曼5

为什么
kacang
不在文档2、3、4和5中?感谢您的更正..好的,不要注意它。所以,我们还需要一个步骤。dd
transform(rowSums(inspect(TermDocumentMatrix(v)) >= 1))
dd <- strsplit(as.character(TEXT),' ') 

> transform(table(unlist(lapply(dd,unique))))
#      Var1 Freq
#1  dimakan    3
#2  diserbu    3
#3   jagung    5
#4   kacang    4
#5  kelinci    4
#6  ketimun    4
#7   ladang    3
#8    rusak    4
#9   seumur    1
#10 tanaman    5