varios - Reemplazar caracteres específicos dentro de las cadenas
excel reemplazar un caracter por otro (5)
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"
Lo que gsub
hace aquí es reemplazar cada aparición de "e"
con una cadena vacía ""
.
Consulte ?regexp
gsub
o gsub
para obtener más ayuda.
Me gustaría eliminar caracteres específicos de cadenas dentro de un vector, similar a la función Buscar y reemplazar en Excel.
Aquí están los datos con los que empiezo:
group <- data.frame(c("12357e", "12575e", "197e18", "e18947")
Comienzo solo con la primera columna; Quiero producir la segunda columna eliminando las e
:
group group.no.e
12357e 12357
12575e 12575
197e18 19718
e18947 18947
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 use gsub()
con el patrón de reemplazo 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>
No es necesario crear un marco de datos a partir de vectores de cadenas, si desea reemplazar algunos caracteres en él. Las expresiones regulares son una buena opción, ya que ya lo mencionaron @Andrie y @Dirk Eddelbuettel.
Preste atención, si desea reemplazar caracteres especiales, como puntos, debe emplear una sintaxis de expresión regular completa, como se muestra en el siguiente ejemplo:
ctr_names <- c("Czech.Republic","New.Zealand","Great.Britain")
gsub("[.]", " ", ctr_names)
esto producirá
[1] "Czech Republic" "New Zealand" "Great Britain"
Resumiendo 2 formas de reemplazar cadenas:
group<-data.frame(group=c("12357e", "12575e", "197e18", "e18947"))
1) Utilice gsub
group$group.no.e <- gsub("e", "", group$group)
2) Usa el paquete stringr
group$group.no.e <- str_replace_all(group$group, "e", "")
Ambos producirán la salida de deseo:
group group.no.e
1 12357e 12357
2 12575e 12575
3 197e18 19718
4 e18947 18947
Usa el paquete stringi :
require(stringi)
group<-data.frame(c("12357e", "12575e", "197e18", "e18947"))
stri_replace_all(group[,1], "", fixed="e")
[1] "12357" "12575" "19718" "18947"