2

我在 R 中为 2 首歌曲制作了一个词云。现在在 tdm 中,当我显示项目时,我得到了歌曲 1 和歌曲 2 的词频。我也能够完美地打印词云。我的问题是我不想要频率小于 2 的 tdm 中的单词。我该怎么做。

我编写了代码并得到了这个输出:

tdm=TermDocumentMatrix(corpus)

> tdm=as.matrix(tdm)
>
> tdm
>

song 1  song 2
act                   0  2
action                0  2
actions               0  1
activity              5  4

我只想要单词活动,因为它在两首歌中都出现了不止一次。我的意思是我想删除这些词、行为、行为、行为。我怎样才能做到这一点 ?

4

1 回答 1

4

您没有提供数据,这样的东西应该可以工作:

data("crude")
tdm <- TermDocumentMatrix(crude)

x <- as.matrix(tdm)[, 1:2]
x[rowSums(apply(x, 2, ">", 1)) == 2, ]

说明:该行x <- as.matrix(tdm)[, 1:2]仅获得 2 列,例如您的数据,因此它不做任何事情,但需要制作看起来像您的数据,因为您没有提供任何数据。这一行apply(x, 2, ">", 1)说给我这个语句的逻辑值大于 1。然后我用rowSums(逻辑值是 TRUE=1 和 FALSE=0)包装它。等于 2 的值(我以前有> 1过,但这很草率)是您正在寻找的条件。我对此输出使用逻辑索引x[GRAB_THE_ROWS, ]。您可以拆分每个步骤并自己运行代码,如下所示:

(step_1 <- apply(x, 2, ">", 1))
(step_2 <- rowSums(step_1))
(step_3 <- step_2 == 2)
x[step_3, ]
于 2013-11-25T05:24:20.933 回答