首页 > 解决方案 > 计算与向量中的几个模式(AND 运算符)匹配的行数

问题描述

我有数据集:

dataset <- c("male Neque porro quisquam est qui dolorem ipsum quia dolor sit amet female consectetur, adipisci velit young",
   "est qui dolorem tall dolorem ipsum  female Neque young",
   "male, female porro old")

dataset <- as.data.frame(dataset)

我有一个关键字列表:

 keywords <- c("male", "female", "young")

我可以计算包含“单词”的行数:

sapply(keywords, function(x) length(grep(x, dataset$dataset, ignore.case = TRUE)))

我的结果:

 male female  young 
   3      3      2 

我想要的是:计算与关键字组合(AND 运算符)匹配的行数。

标签: r

解决方案


一种方法是使用stri_extract_all_regex获取所有keywords. 然后遍历该列表组合以获取对,unlist并用于table计数,即

library(stringi)

table(unlist(sapply(stri_extract_all_regex(dataset$dataset, paste(keywords, collapse = '|')),
                                                          function(i)combn(i, 2, toString))))

#female, young  male, female   male, young 
#            2             2             1 

推荐阅读