根据R中的文本类别有条件地为列分配值

时间:2017-02-14 19:10:34

标签: r text grep data-manipulation

我需要根据“关键字”为新列指定值。我做了一些简单的试验,如下所示。规则是我需要将包含“广告”或“营销”的所有关键字标记为“营销”。

keyword <- c("advertising plan",
           "advertising budget",
           "marketing plan",
           "marketing budget",
           "hr plan",
           "hr budget",
           "operation plan",
           "operation budget")
indicator <- c(1,0,0,1,1,1,0,1)
sample <- cbind(keyword,indicator)

我曾经使用这种方法进行标记。

sample$topic <- ifelse(grepl("(marketing|advertising)",sample$keyword),"Marketing",0)

但是现在,我有更长的规则,它们存储为另一个字符串因子,如下所示:

rule <- c("marketing", "advertising", "word 3", "word 4" .... "word 500")

很难在前面的代码中逐个输入规则。我想知道是否有办法在R中一起运行所有规则,或者我应该编写一个循环来执行此操作。

1 个答案:

答案 0 :(得分:0)

我们可以将vector合并为|pattern的分隔符grepl的单个字符串

ifelse(grepl(paste(rule, collapse="|"), sample$keyword), "Marketing", 0)