331 Stimmen

Bestimmte Zeichen in Zeichenketten ersetzen

Ich möchte bestimmte Zeichen aus Zeichenketten innerhalb eines Vektors entfernen, ähnlich wie bei der Suchen und Ersetzen Funktion in Excel.

Hier sind die Daten, mit denen ich beginne:

group <- data.frame(c("12357e", "12575e", "197e18", "e18947")

Ich beginne nur mit der ersten Spalte; ich möchte die zweite Spalte durch Entfernen der e 's:

group       group.no.e
12357e      12357
12575e      12575
197e18      19718
e18947      18947

484voto

Andrie Punkte 169813

Mit einem regulären Ausdruck und der Funktion gsub() :

group <- c("12357e", "12575e", "197e18", "e18947")
group
[1] "12357e" "12575e" "197e18" "e18947"

gsub("e", "", group)
[1] "12357" "12575" "19718" "18947"

Was gsub ersetzt hier jedes Vorkommen von "e" mit einer leeren Zeichenkette "" .


Véase ?regexp o gsub für weitere Hilfe.

55voto

Dirk Eddelbuettel Punkte 345316

Reguläre Ausdrücke sind Ihre Freunde:

R> ## also adds missing ')' and sets column name
R> group<-data.frame(group=c("12357e", "12575e", "197e18", "e18947"))  )
R> group
   group
1 12357e
2 12575e
3 197e18
4 e18947

Verwenden Sie nun gsub() mit dem einfachsten möglichen Ersetzungsmuster: leere Zeichenkette:

R> group$groupNoE <- gsub("e", "", group$group)
R> group
   group groupNoE
1 12357e    12357
2 12575e    12575
3 197e18    19718
4 e18947    18947
R>

37voto

Megatron Punkte 14031

Zusammenfassung von 2 Möglichkeiten, Zeichenketten zu ersetzen:

group<-data.frame(group=c("12357e", "12575e", "197e18", "e18947"))

1) Verwendung gsub

group$group.no.e <- gsub("e", "", group$group)

2) Verwenden Sie die stringr Paket

group$group.no.e <- str_replace_all(group$group, "e", "")

Beide werden die gewünschte Leistung erbringen:

   group group.no.e
1 12357e      12357
2 12575e      12575
3 197e18      19718
4 e18947      18947

22voto

Alexander Punkte 3534

Sie müssen keinen Datenrahmen aus einem Vektor von Zeichenketten erstellen, wenn Sie einige Zeichen darin ersetzen möchten. Reguläre Ausdrücke sind dafür eine gute Wahl, wie bereits von @Andrie und @Dirk Eddelbüttel erwähnt wurde.

Wenn Sie Sonderzeichen wie Punkte ersetzen wollen, sollten Sie die vollständige Syntax des regulären Ausdrucks verwenden, wie im folgenden Beispiel gezeigt:

ctr_names <- c("Czech.Republic","New.Zealand","Great.Britain")
gsub("[.]", " ", ctr_names)

Dies führt zu

[1] "Czech Republic" "New Zealand"    "Great Britain"

6voto

MERose Punkte 3556

Verwenden Sie die stringi Paket:

require(stringi)

group<-data.frame(c("12357e", "12575e", "197e18", "e18947"))
stri_replace_all(group[,1], "", fixed="e")
[1] "12357" "12575" "19718" "18947"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X