funktioniert habe ich eine Daten wie dieseMutate Zeilen basierend auf Bearbeitungs in Strings Benutzer definiert, die universell
clas=c("CD_1","X.2_2","K$2_3","12k3_4",".A_5","xy_6")
df <- data.frame(clas)
> df
clas
1 CD_1
2 X.2_2
3 K$2_3
4 12k3_4
5 .A_5
6 xy_6
und ich möchte einige Zeilen ändern, dass diese Bedingung
wenn die Saiten nach _
übereinstimmen sind 4,5 und 6 ersetzen die Strings vor dem _
mit String B
. Also sollte die Ausgabe so sein;
clas
1 CD_1
2 X.2_2
3 K$2_3
4 12kB_4
5 .B_5
6 xB_6
Vielen Dank!
EDIT ::
SO Wenn ich Daten wie folgt aus:
clas
1 CD_1
2 X.2_2
3 K$2_3
4 12k3_4
5 .A_5
6 xy_11
Ihre Lösung dann Anwendung,
df %>% mutate(clas = str_replace(clas, "(.)(_[4511])", "B\\2"))
clas
1 CB_1
2 X.2_2
3 K$2_3
4 12kB_4
5 .B_5
6 xB_11
Aber ich will nur 11
nicht 1
übereinstimmen. Wie können wir das machen ?
Danke für die Antwort und Erklärung. Nehmen wir an, wir haben mehr als drei Zahlen, nicht nur 4,5,6, wie wir das umsetzen? Zum Beispiel arbeitet seq (1,10) nicht innerhalb von '" (.) (_ [456]) "" Ich nehme an? – Alexander
Nun, alle Optionen für den Abgleich sind innerhalb von '[]', so dass Sie '[123456789]' oder einfach '[1-9]' einfügen können. Schauen Sie sich diesen [Cheatsheet für reguläre Ausdrücke] (https://www.rstudio.com/wp-content/uploads/2016/09/RegExCheatsheet.pdf) an, der einzige knifflige Teil ist hier die Verwendung des '\\ 2 'Rückreferenz. – shians
Ihre Lösung ist großartig, aber ich habe gerade ein kleines Problem im realen data.frame erkannt. Könntest du den EDIT-Teil des OPs überprüfen? – Alexander