2017-01-12 14 views
1

「広告」または「マーケティング」も含まれていない限り、「プラン」という単語がキーワードに含まれる行を取り除きたいと考えています。具体的には、サンプルデータセットでは、 "hr計画"と "運用計画"を含むキーワードを含む行を削除する必要があります。追加条件付きの特定の単語を含む行を削除する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) 
+0

あなたは指標ベクトルから何かを見逃しているかもしれ、それは同じ長さではありませんため –

+0

感謝思い出す –

答えて

1

regexとstringrパッケージを使用して解決できる可能性があります。コメントで述べたように、私はindicatorをさらに2つの値に拡張しました。基本的にはkeywordの「計画」がないか、「広告」または「マーケティング」から始まる正規表現を検出したいと考えています。派手な正規表現を使用せずに、HTH

library("tidyverse") 
library("stringr") 

keyword <- c("advertising plan", 
      "advertising budget", 
      "marketing plan", 
      "marketing budget", 
      "hr plan", 
      "hr budget", 
      "operation plan", 
      "operation budget") 

indicator <- c(1,0,1,0,0,1,1,1) 

df <- data_frame(keyword,indicator) 

    df %>% 
    filter(!keyword %>% stringr::str_detect("plan") | 
      keyword %>% stringr::str_detect(pattern = c("^advertising|marketing"))) 

# A tibble: 6 × 2 
      keyword indicator 
       <chr>  <dbl> 
1 advertising plan   1 
2 advertising budget   0 
3  marketing plan   1 
4 marketing budget   0 
5   hr budget   1 
6 operation budget   1 
+0

あなたのパターン検索は 'plan'を全く検索しません。 – thelatemail

+0

申し訳ありません - 私はあなたが "計画"を含んでいるすべての行を取り除きたいと思っていました_それは "広告"か "マーケティング"で始まる_unless_ - これは何ですか? – davidski

+0

それは良く見えますが、 'stringr :: 'プレフィックスだと思います。すでに' stringr'パッケージをロードしているので、大丈夫です。 – thelatemail

2

、私はおそらくちょうどあなたの2つのルールを組み合わせるために行くだろう:

sample[!(grepl("plan", sample[,"keyword"]) & 
     (!grepl("marketing|advertising", sample[,"keyword"]))),] 
#  keyword    indicator 
#[1,] "advertising plan" "1"  
#[2,] "advertising budget" "0"  
#[3,] "marketing plan"  "0"  
#[4,] "marketing budget" "1"  
#[5,] "hr budget"   "1"  
#[6,] "operation budget" "1" 
+0

それはうまく動作します。私の質問を編集して回答してくれてありがとう。 –

関連する問題