2017-04-11 1 views
0

データフレームの1列の文字列と参照文字列を比較し、一致する場合は共通の単語に置き換えます。たとえば、列Aを検索し、列Bの一致を検索し、一致する文字列を単語 '名前'に置き換えます。2つの異なるデータフレームで文字列を一致させた後、文字列を共通のフレーズに置き換えます。R

考えられますか?

例:

v1 <- c("corey joe","joe", "emily", "joe") 
v2 <- c("corey", "emily") 

最終的な出力は次のようになります。

v1 = "name joe joe name joe" 

私は部分的な成功に

ifelse(pmatch(v1, v2), 'name') 
NA NA name NA 

を使用しましたが、それはので、名前にコーリーは変更されません。 googleもその文字列に入っています。またジョーをNAに変換して、それをジョーにしておく必要があります

ご協力いただきありがとうございます。あなたがstringrのstr_replace使用することができます

答えて

1

:あなたがしたい場合は

> paste(value,collapse=" ") 
[1] "name joe joe name joe" 

:あなたは1つの文字列にすべてをしたい場合は

library(stringr) 

value <- str_replace(v1,"corey|emily","name") 

> str_replace(v1,"corey|emily","name") 
[1] "name joe" "joe"  "name"  "joe" 

を、あなたは以下のようにpastecollapseオプションを使用することができます使用gsubベースからR

value <- gsub("corey|emily","name",v1) 

> gsub("corey|emily","name",v1) 
[1] "name joe" "joe"  "name"  "joe"  
> 
> paste(value,collapse=" ") 
[1] "name joe joe name joe" 
あなたは、変数を使用したい場合には

、あなたはpaste0使用することができます:SOあり、 そして、私は認める:

str_replace(v1,paste0(v2[1],"|",v2[2]),"name") 

より正確には:コメントの後

str_replace(v1,paste0(v2[1:length(v2)],collapse="|"),"name") 

EDITを素晴らしい場所、@スカラベで提案されているように、非常に簡単な解決策が追加されました。str_replace(v1,v2,"name")

> value <- str_replace(v1,paste0(v2,collapse="|"),"name") 
> final <- paste(value,collapse=" ") 
> final 
[1] "name joe joe name joe" 

結果は同じです。

関連する問題