我正在使用包tm。
我有一个包含2列的数据框,第一列是ID,seocnd列包含文本。数据框如下所示。
Id Text
13456 Hi, Good morning
13457 How are you?
13456 May I know who I am speaking to?
13456 Hi, Good evening
我已经使用了tm包并构建了dtm并为每个文档提取了前5个单词,它看起来像:
Id Term1 Term2 Term3 Term4 Term5
13456 Hi Good morning term4 term5
13457 How are you term4 term5
13456 I Know may who to
13456 Hi Good Evening term4 term5
但所需的输出是:
Id Term1 Term2 Term3 Term4 Term5
13456 Hi Good I morning evening
13457 How are you term4 term5
我找不到任何先前的问题。 在此先感谢。
答案 0 :(得分:0)
您遇到的问题源于这样一个事实,即您的每一行数据都被视为单独的文档。因此,在将数据提供给生成dtm的过程之前,您需要通过“dd”aggregate
数据。
以下显示和如何在基础R中使用aggregate
的示例。如果您有大量文档,则可以更有效地完成此操作,例如,使用包data.table
,可能会看看。但是,为了简单起见,我使用了基础R.(我已经使用了自己的示例数据,下次请使用dput
或提供生成数据的代码,以便其他人更容易阅读您的示例数据。)
df <- data.frame(id = c(1, 1, 2) , text = c("text1.", "text2.", "text3."))
# id text
# 1 1 text1.
# 2 1 text2.
# 3 2 text3.
df <- aggregate(df$text, by = list(df$id), FUN = function(x) paste(x, collapse = " "))
# Group.1 x
# 1 1 text1. text2.
# 2 2 text3.
colnames(df) <- c("id", "text")