R преобразовать кадр данных в матрицу терминов-документов

В настоящее время я изучаю свои пути вокруг R, и меня беспокоит следующая проблема:

У меня есть фрейм данных, который создается следующим образом

word       freq1        freq2

tree        10           20
this         2            3
that         4            5
...

Он показывает частоту, с которой слово используется в тексте 1 (freq1) и тексте 2 (freq2). Можно ли преобразовать это в термин-документ-матрицу? Мне нужно, чтобы это была матрица терминов-документов для применения следующей функции

par(mfrow=c(1,1))
comparison.cloud(tdm, random.order=FALSE, colors = 
c("indianred3","lightsteelblue3"),
title.size=2.5, max.words=400)

из https://rpubs.com/brandonkopp/creating-word-clouds-in-r

Спасибо :)


person Hunterofdark91    schedule 23.01.2019    source источник
comment
Пробовали ли вы использовать библиотеку tm или у вас уже есть термины wordcloud и wordcloud2?   -  person NelsonGon    schedule 23.01.2019
comment
Кроме того, compare.cloud использует матрицу, а не TDM.   -  person NelsonGon    schedule 23.01.2019
comment
Здравствуйте, Hunterofdark, возможно, этот пакет/функция будет полезен: rdocumentation .org/packages/qdap/versions/2.3.0/topics/as.tdm   -  person TinglTanglBob    schedule 23.01.2019


Ответы (1)


EDIT: после изменения формы данных:

library(reshape2)
library(tm)
library(dplyr)
library(wordcloud)
df2<-df %>% 
  gather("Origin","Freq",c(2,3)) %>% 
  acast(word~Origin,fill=0,value.var = "Freq")
comparison.cloud(df2, random.order=FALSE, colors = c("indianred3","lightsteelblue3"),
                 max.words=400)

Результат: введите здесь описание изображения

Исходный ответ: с вашими данными что-то не так. Вот базовый рабочий процесс, ведущий либо к облаку слов, либо к облаку сравнения.

library(tm)
library(dplyr)
library(wordcloud)
df<-read.table(text="word       freq1        freq2

               Tree        10           20
               This         2            3
               That         4            5",header=T)
df$word<-as.character(df$word)
df1<-df %>% 
  gather()
corpus_my<-Corpus(VectorSource(df1))
tdm<-as.matrix(TermDocumentMatrix(corpus_my))
comparison.cloud(tdm, random.order=FALSE, colors = c("indianred3","lightsteelblue3"),
                 max.words=400)

Это дает не то, что вы ожидаете. Я бы посоветовал сначала реструктурировать ваши данные: введите здесь описание изображения

person NelsonGon    schedule 23.01.2019
comment
Это выглядит полезным! Я попробую, когда буду дома. Я знал, что, вероятно, структура моих данных была проблемой, но я не знал, как это исправить. Я вернусь, чтобы прокомментировать после того, как я попробовал это. Большое спасибо уже за ваши усилия :) - person Hunterofdark91; 23.01.2019
comment
Позвольте мне знать, как это получается! - person NelsonGon; 23.01.2019
comment
Рад, что помог. - person NelsonGon; 24.01.2019