首页 > 解决方案 > R:将文档术语计数的数据框转换为文档术语矩阵(dtm)

问题描述

我已经有一个文档术语计数级别的数据框,注意文档和术语仅由整数索引,并且分数是加权连续数字,如果相关的话,例如:

doc  term  count
1    2     2
1    5     3.1
2    2     0.4
3    5     5.9

但它目前是一个数据框,我想将其转换为 dtm 格式,以便使用一些 dtm-ready 功能(即 RNewsflow 的“documents.compare”功能)。

我一直在尝试通过以下方式使用“cast_dtm”:

dtm <- as.matrix(df) %>% cast_dtm(document, term, count)

其中“df”是上面示例的数据框,但出现以下错误:

Error in UseMethod("ungroup") : no applicable method for 'ungroup' applied to an object of class "c('matrix', 'double', 'numeric')"

标签: rmatrixtmtidytext

解决方案


你快到了。而不是“文档”,您需要“文档”作为输入,因为您的列名是文档而不是文档。请参见下面的示例。

library(tidytext)
library(dplyr)
dtm <- df %>% cast_dtm(document = doc, term = term, value = count)

数据:

df <- structure(
  list(
    doc = c(1L, 1L, 2L, 3L),
    term = c(2L, 5L, 2L,5L),
    count = c(2, 3.1, 0.4, 5.9)),
  .Names = c("doc", "term", "count"),
  class = "data.frame",
  row.names = c(NA,-4L)
)

推荐阅读