2017-02-14 23 views
0

Мне нужно присвоить значения новому столбцу на основе «ключевого слова». Я сделал несколько простых проб, как показано ниже. Правило: мне нужно пометить все ключевые слова, содержащие «рекламу» или «маркетинг», как «маркетинг».Присвоить значения столбцу, условно основанному на текстовой категории, в R

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

Используйте 'paste' разрушаться вектор т.е.' as.integer (grepl (паста (правило, коллапс = "|"), пример $ keyword)) ' – akrun

ответ

0

Мы можем свернуть vector в к одной строке с разделителем | для pattern в grepl

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

Спасибо за ответ. Я пробовал это, но значение возвращается как 1 вместо «Маркетинг». –

+0

@ RyanTao Я раньше не видел «Маркетинг», исправил его – akrun

+0

Спасибо. Он отлично работает –