如何计算R中的文档频率?
我有一个名为“pertanian”的数据框: 根据上面的术语文档矩阵,我想制作一个文档频率,如下所示:如何计算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
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