【问题标题】:Assign values to a column conditionally based on text category in R根据R中的文本类别有条件地为列分配值
【发布时间】:2017-02-14 19:10:34
【问题描述】:

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

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 中同时运行所有规则,或者我应该编写一个循环来执行此操作。

【问题讨论】:

  • 使用paste 折叠向量,即as.integer(grepl(paste(rule, collapse="|"), sample$keyword))

标签: r text data-manipulation grepl


【解决方案1】:

我们可以将vector 折叠成一个带有分隔符| 的字符串,用于pattern in grepl

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

【讨论】:

  • 感谢您的回答。我试过了,但返回值为 1 而不是“Marketing”。
  • @RyanTao 之前没看到“营销”,更正一下
猜你喜欢
  • 1970-01-01
  • 2015-11-19
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
  • 2018-07-10
  • 1970-01-01
相关资源
最近更新 更多