2016-05-01 9 views
-2

私はこの列に3人の名前を検索してい各行は、名前の束を含んでおり、これらの名前は、カンマで区切られている,Rストリングの一致の正確な単語

Col1 
---------------------------------------------------- 
Missy Monroe, Andy Dalton P, Deny Grove, Easton West 
Susan Schmidt, Bella Blu, Dennis Lee H, Georges Madison 
Maya Unger, Kal Rapinsky, Richard Izzo, Rob Kolfax 
Bismark Bison, Twyla Yellow Bird Bell, Yost Jefferson 

以下のようにデータフレームの列を有していますMissy MonroeまたはDennis LeeまたはBismark Bisonこれらの名前のいずれかが見つかった場合は、値Yesを第2列に帰属させます。これらの名前がいずれも見つからない場合、値は2番目の列ではNoにする必要があります。最終的な出力は次のようになります。

Col1               Results 
---------------------------------------------------------------------- 
Missy Monroe, Andy Dalton P, Deny Grove, Easton West   Yes 
Susan Schmidt, Bella Blu, Dennis Lee H, Georges Madison  Yes 
Maya Unger, Kal Rapinsky, Richard Izzo, Rob Kolfax    No 
Bismark Bison, Twyla Yellow Bird Bell, Yost Jefferson   Yes 

これを達成するための助けがあれば幸いです。

答えて

4

これはデータフレームDFのために働くべきである:

df$Results <- ifelse(grepl("(Missy Monroe|Dennis Lee|Bismark Bison)", 
          df$Col1), "Yes", "No") 

grepl機能はifelseのための完全な入力である、TRUEまたはFALSEを返します。

@ david-arenburgノートでは、この列を追加のデータ分析に使用する予定がある場合は、文字列ベクトルではなく論理ベクトルとして構築する方が良いでしょう。この場合、

df$Results <- grepl("(Missy Monroe|Dennis Lee|Bismark Bison)", df$Col1) 

で十分です。

+0

私は愚かさに感謝しています。ありがとうございました –

+0

おそらく 'grep("(Missy Monroe | Dennis Lee | Bismark Bison) "、df $ Col1)'論理的なベクトルを得るには十分でしょう。後で作業する方がはるかに簡単です。 –

+0

私はあなたの意見を述べていますが、OPがデータで後で何をしたいのかははっきりしていません。結果はCSVに書き込まれ、スプレッドシートに少し書式が設定され、壁に掲示されるように印刷されます。 – lmo

関連する問題