77 votos

En la R, ¿cómo reemplazo el texto dentro de una cadena?

En la R, me gustaría eliminar los caracteres específicos de las cadenas dentro de un vector, de manera similar a la función "buscar y reemplazar" de Excel.

Aquí están los datos con los que empiezo:

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

Empiezo con la primera columna; quiero producir la segunda columna quitando las "e":

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

122voto

Andrie Puntos 66979

Con una expresión regular y la función gsub() :

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

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

Que gsub es reemplazar cada ocurrencia de "e" con una cadena vacía "" .


Ver ?regexp o gsub para más ayuda.

35voto

Megatron Puntos 107

Resumiendo 2 formas de sustituir las cadenas:

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

1) Utilizar gsub

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

2) Utilice el stringr paquete

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

Ambos producirán el resultado deseado:

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

20voto

Dirk Eddelbuettel Puntos 134700

Las expresiones regulares son tus amigos:

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

Ahora usa gsub() con el patrón de sustitución más simple posible: cadena vacía:

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

19voto

Alexander Puntos 2376

No es necesario crear un marco de datos a partir de un vector de cadenas, si quiere reemplazar algunos caracteres en él. Las expresiones regulares son una buena opción para ello, como ya han mencionado @Andrie y @Dirk Eddelbuettel.

Preste atención, si quiere reemplazar caracteres especiales, como puntos, debe emplear la sintaxis completa de la expresión regular, como se muestra en el ejemplo siguiente:

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

esto producirá

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

5voto

MERose Puntos 2979

Utilice el stringi paquete:

require(stringi)

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

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X