我有一个数据集x,其中有大量文本(columns: title, location, contents)
,大约有3000行。
编辑:一个例子。
标题|位置|内容 ... 迪拜 .... ... 迪拜 .... ...... KHARTOUM .... ...... KHARTOUMSUDAN .... ......雅加达......
我有一份地点清单。 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
答案 0 :(得分:4)
我们可以使用tidyverse
map
执行此操作
library(tidyverse)
map(locations, ~
x %>%
summarise(n = sum(str_detect(location, .x, ignore_case = TRUE)))
)
注意:假设'x'是数据集,'location'是列,OP的帖子'locations'是vector
个模式