R - 如何:对于某个列表中的每个单词,计算单词在例如3000个单词的列中出现的频率

时间:2018-02-15 09:41:39

标签: r string loops counting grepl

我有一个数据集x,其中有大量文本(columns: title, location, contents),大约有3000行。

编辑:一个例子。

标题|位置|内容 ... 迪拜 .... ... 迪拜 .... ...... KHARTOUM .... ...... KHARTOUMSUDAN .... ......雅加达......

link to image example

我有一份地点清单。 locations <- c("DUBAI", "KHARTOUM", "JAKARTA", "Paris")

现在我想制作一个循环,从迪拜开始,看看它出现了多少列,然后创建一个带有计数的变量。然后我想转到位置列表(Khartoum)中的下一个单词并执行相同的操作。

所以在这种情况下,我希望看到:迪拜= 2,喀土穆= 2,雅加达= 1.

到目前为止,我有这个,但我不知道如何概括它并将其变成循环:

numberDUBAI <- nrow(dplyr::filter(x, grepl(' DUBAI ', location))) 

然后我为每个单词重复

numberLOCATIONS <- c(numberDUBAI, numberKHARTOUM, numberJAKARTA, numberPARIS)

但这感觉非常低效,有帮助吗? :d

1 个答案:

答案 0 :(得分:4)

我们可以使用tidyverse

使用map执行此操作
library(tidyverse)
map(locations, ~
               x %>%
                  summarise(n = sum(str_detect(location, .x, ignore_case = TRUE)))
      )

注意:假设'x'是数据集,'location'是列,OP的帖子'locations'是vector个模式