2014-03-15 9 views
6

Neu in R. Suchen, um die gesamte Zeichenfolge zu ersetzen, wenn es eine teilweise Übereinstimmung gibt.Ersetzen Sie ganze Strings basierend auf partieller Übereinstimmung

d = c("SDS0G2 Blue", "Blue SSC2CWA3", "Blue SA2M1GC", "SA5 Blue CSQ5") 

gsub("Blue", "Red", d, ignore.case = FALSE, fixed = FALSE) 

Ausgang: "SDS0G2 Red" "Red SSC2CWA3" "Red SA2M1GC" "SA5 Red CSQ5"

gewünschte Ausgabe: „Red“ „Red“ „Red“ „Red“

Jede Hilfe bei der Lösung dieses Problems wird sehr geschätzt.

Antwort

4

würde ich mit grepl schlagen die Indizes zu finden und diese Indizes mit „Red“ ersetzen:

d = c("SDS0G2 Blue", "Blue SSC2CWA3", "Blue SA2M1GC", "SA5 Blue CSQ5", "ABCDE") 
d[grepl("Blue", d, ignore.case=FALSE)] <- "Red" 
d 
# [1] "Red" "Red" "Red" "Red" "ABCDE" 
+0

Eignet sich hervorragend für diesen Datensatz. Originaldaten waren in einem Datenrahmen und es funktionierte nicht dafür. Konvertiert die Spalte in Zeichen und es hat gut funktioniert. – user3422112

+0

Wenn Sie so ein Anfänger sind, den Sie uns nicht sagen (oder vielleicht sogar merken), dass eine Spalte ein Faktor ist, dann sollten Sie IMMER entweder 'dput (dat)' oder 'str (dat)' mit Ihren Daten posten Objekte. –

Verwandte Themen