gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:45:40 27 4
gpt4 key购买 nike

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

DOCS <- c(1:5)
TEXT <- c("tanaman jagung seumur jagung " ,
"tanaman jagung kacang ketimun rusak dimakan kelinci" ,
"ladang diserbu kelinci tanaman jagung kacang ketimun rusak dimakan" ,
"ladang diserbu kelinci tanaman jagung kacang ketimun rusak dimakan" ,
"ladang diserbu kelinci tanaman jagung kacang ketimun rusak ")
pertanian <- data.frame(DOCS , TEXT)

从我创建的数据框中,我创建了一个术语文档频率,如下所示:

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"

但是,输出结果产生的是“term frequency”而不是“document frequency”,因为术语'jagung'计算为6,文档频率应该是5

最佳答案

是这样的吗?

注意:这里我假设您想要的输出有错误并且 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)

给出:

#Source: local data frame [10 x 2]
#
# Term DF
#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

或者你可以简单地做:

transform(rowSums(inspect(TermDocumentMatrix(v)) >= 1))

关于r - 如何计算R中的文档频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30880175/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com