如何创建一个术语矩阵,汇总与每个文档相关的数值?

3

我是一个对R和tm比较新的人,所以在这个练习中有些困难!

我有一个包含客户姓名、城市和国家相关单词的混乱非结构化数据的描述列和另一列售出物品的数量。

**Description   Sold Items**
Mrs White London UK 10
Mr Wolf London UK   20
Tania Maier Berlin Germany  10
Thomas Germany  30
Nick Forest Leeds UK    20
Silvio Verdi Italy Torino   10
Tom Cardiff UK  10
Mary House London   5

使用tm包和documenttermmatrix,我能够将每一行拆分成单词,并获取每个单词的频率(即使用该单词的客户数量)。
         UK London  Germany …   Mary
Frequency   4   3   2   …   1

然而,我也想对已售出商品的总数进行汇总。

期望的输出应该是:

         UK London  Germany …   Mary
Frequency   4   3   2   …   1
Sum of Sold Items   60  35  40  …   5

我该如何达到这个结果?

1个回答

1
假设您已经得到了“频率表”这个阶段:
           UK London  Germany …   Mary
Frequency   4   3   2   …   1

如果你想提取单词,可以使用 grep 函数。这里我将创建一个向量,该向量表示从您的 frequency 表中提取的字典:

S_data<-read.csv("data.csv",stringsAsFactors = F)

Words<-c("UK","London","Germany","Mary")

然后在应用程序中使用如下。这可以更有效地完成。但你会明白的:

string_rows<-sapply(Words, function(x) grep(x,S_data$Description))

string_sum<-unlist(lapply(string_rows, function(x) sum(S_data$Items[x])))
> string_sum
     UK  London Germany    Mary 
     60      35      40       5 

只需将此绑定到您的频率表上。

谢谢Hanjo。你在哪一步运行的呢?当我尝试运行string_sum时,最后的输出是0 0 0 0。 - DocumentTermMatrix
抱歉,是我疏忽了。我只需要将列名更改为“Items”。现在可以正常工作了! - DocumentTermMatrix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接