2012-07-04 24 views
8

Pregunta relacionada here.Quitar dos caracteres de una cadena

Así que tengo un vector de caracteres con valores de moneda que contienen signos de dólar y comas. Sin embargo, quiero intentar eliminar tanto las comas como los signos de dólar en el mismo paso.

Esto elimina signos de dólar =

d = c("$0.00", "$10,598.90", "$13,082.47") 
gsub('\\$', '', d) 

Esto elimina las comas =

library(stringr) 
str_replace_all(c("10,0","tat,y"), fixed(c(","), "") 

Me pregunto si podía quitar los dos personajes en un solo paso.

Me doy cuenta de que podría simplemente guardar los resultados de gsub en una nueva variable, y luego volver a aplicar esa (u otra función) en esa variable. Pero creo que me estoy preguntando sobre un solo paso para hacer ambas cosas.

+2

No soy experto en expresiones regulares, pero tal vez 'gsub ('\\ $ |,', '', d)'? – joran

Respuesta

12

Dado que responder en los comentarios es malo:

gsub('\\$|,', '', d) 

reemplaza cualquiera $ o (|) , con una cadena vacía.

+0

¿Para qué sirven las barras diagonales dobles? @joran –

+1

@WhiteBig '$' es un carácter especial en expresiones regulares y se puede escapar tanto. Puedes leer sobre esto a través de '? Regex'. – joran

+0

bien, me parece que R usa el doble // para escapar. –

3

echar un vistazo a ?regexp para la notación adicional expresión regular especial:

> gsub('[[:punct:]]', '', d) 
[1] "000"  "1059890" "1308247" 
+0

Creo que también eliminará el punto decimal, lo que parece no ser lo que el OP quería. La respuesta de @ joran arriba parece hacerlo exactamente sin demasiado. – thelatemail

+0

@thelatemail ¡estás en lo correcto! ¡No debería responder preguntas cuando hay tequila alrededor! la respuesta que aportaron joran es mucho mejor. – Justin

Cuestiones relacionadas