2017-04-11 3 views
0

versucht, eine Codezeile zu schreiben, die Zeichenfolgen in einer Spalte von Datenrahmen mit einer Referenzzeichenfolge vergleicht und bei Übereinstimmung mit einem allgemeinen Wort ersetzt. Suchen Sie beispielsweise Spalte A und suchen Sie nach Übereinstimmungen in Spalte B, und ersetzen Sie die übereinstimmende Zeichenfolge durch das Wort "Name".Ersetzen Sie die Zeichenfolge durch eine allgemeine Wortgruppe nach übereinstimmender Zeichenfolge in zwei verschiedenen Datenrahmen. R

Gedanken?

Beispiel:

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

endgültig ausgegeben werden soll:

v1 = "name joe joe name joe" 

Ich habe verwendet

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

mit Teilerfolg, aber es corey nicht zu nennen ändern, weil Google ist auch in dieser Zeichenkette. Es konvertiert auch Joe zu NA und ich muss es behalten Joe

Jede Hilfe würde sehr geschätzt werden - danke!

Antwort

1

Sie stringr die verwenden str_replace:

library(stringr) 

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

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

Falls Sie alles in einen String, können Sie collapse Option in paste wie unten verwenden:

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

Falls Sie möchten, Verwenden Sie gsub von BASE 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" 

Falls Sie Variable verwenden, dann können Sie paste0 verwenden:

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

Genauer gesagt:

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

EDIT Nach dem Kommentar: Und ich gebe zu, SO ist ein Großartiger Platz, wie von @Scarabee vorgeschlagen, sehr einfache Lösung hinzugefügt, die str_replace(v1,v2,"name")

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

Ergebnisse wären gleich.

Verwandte Themen