it-swarm.com.de

Ersetzen Sie bestimmte Zeichen in Zeichenfolgen

Ich möchte bestimmte Zeichen aus Zeichenfolgen in einem Vektor entfernen, ähnlich der Funktion Suchen und Ersetzen in Excel.

Hier sind die Daten, mit denen ich beginne:

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

Ich beginne mit der ersten Spalte. Ich möchte die zweite Spalte erzeugen, indem ich die e entferne:

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

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 hier tut, ist, jedes Vorkommen von "e" durch eine leere Zeichenfolge "" zu ersetzen.


Weitere Hilfe finden Sie unter ?regexp oder gsub.

373
Andrie

Reguläre Ausdrücke sind deine 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 Zeichenfolge:

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

Zusammenfassen von 2 Möglichkeiten zum Ersetzen von Zeichenfolgen:

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

1) Verwenden Sie gsub

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

2) Verwenden Sie das Paket stringr

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

Beide erzeugen die Wunschausgabe:

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

Sie müssen keinen Datenrahmen aus einem Vektor von Zeichenfolgen erstellen, wenn Sie einige Zeichen darin ersetzen möchten. Reguläre Ausdrücke sind eine gute Wahl, da sie bereits von @Andrie und @Dirk Eddelbuettel erwähnt wurden.

Achten Sie darauf, wenn Sie Sonderzeichen wie Punkte ersetzen möchten, sollten Sie die Syntax für reguläre Ausdrücke verwenden, wie im folgenden Beispiel gezeigt:

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

das wird produzieren

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

Verwenden Sie das stringi -Paket:

require(stringi)

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

            group <- c('12357e', '12575e', '12575e', ' 197e18',  'e18947')

            pattern <- "e"  
            replacement <-  ""  
            group <- str_replace(group, pattern, replacement)      
            group    

[1] "12357"  "12575"  "12575"  " 19718" "18947" 
0
Anya Sti