2017-06-30 3 views
0

特定のLOBからデータ・フレーム(以下のような)からいくつかの職種を削除するにはどうすればよいですか?例えば。私は技術マネージャをLOB4に保ちたいと思っています。技術販売はLOB2には必要ありません。下のコードを実行すると、データフレーム全体からタイトルが削除されます。特定の行のループ

これを行う方法はありますか?

LOB  Title 
LOB1 sales rep 
LOB2 technology sales 
LOB2 receptionist 
LOB3 Web Designer 
LOB4 Technology Manager 



for (i in c("(?=.*technology)", "(?=.*designer)")) { 

    del <- grepl(i, data[data$LOB == "LOB1" | data$LOB == "LOB2",2], perl = T, ignore.case = T) 

    data <- data[!del, ] 
} 
+0

「LOB1における技術の販売を必要としない」 - 「技術の売上高は」LOB2と行にあります。あなたはそれを意味しましたか?確認または編集してください。 – Spacedman

+0

正しい。これを指摘してくれてありがとう – Roman

答えて

0

grepl文は、その後data.frame 5を持つ行をサブセットするために使用される3の長さを持つベクトルを返すので、これは動作しない可能性があります。 forループはまた、おそらく必要なものではなく、以下のいずれかがLOB2に技術の販売をドロップします:

data[!grepl("(?=.*(technology|designer))", data$Title, perl = TRUE), ] 
data[!data$Title == "technology sales", ] 
data[!data$Title %in% c("technology sales", "job2 to drop"), ] 
data[-2, ] 
+0

返事をありがとう。私はちょうど私がしようとしているものの例を与えた。 forループを使用している理由は、データベースが1Mのジョブを超えており、除外する必要があるキーワードのリストが〜500であるためです。私はこのコードを使ってデータフレーム全体のコードを実行していますが、完全に動作します。しかし、私もいくつかの特定のレコードで同じことをする必要があります。また、データフレームを分割してforループを実行し、データを再度結合することもできますが、もっと便利な方法があると考えていました。それが理にかなってほしい。 – Roman

関連する問題