R Expresión regular: reemplace la lista completa de cadenas con información más específica

StackOverflow https://stackoverflow.com//questions/23048595

  •  21-12-2019
  •  | 
  •  

Pregunta

Si tengo datos con una variable categórica que tiene elementos como "Q7", "Q2", etc., ¿cómo lo reemplazo con "7 Queen", "2 Queen", etc.?

¿Fue útil?

Solución

Para empezar, obtendrá el máximo provecho de hacer una pregunta si también incluye el código de lo que ya ha intentado.Dicho esto ...

Tal vez no la forma más eficiente de resolver este problema para grandes conjuntos de datos, pero estos dos métodos parecen funcionar bien en su ejemplo.example(strsplit) tiene una buena función de reversión de cuerdas que podemos usar.

> strReverse <- function(x)
      sapply(lapply(strsplit(x, NULL), rev), paste, collapse = "")

> strg <- c("Q7", "Q2")
> GS <- gsub("Q", strReverse(" Queen"), strg)
> strReverse(GS)
[1] "7 Queen" "2 Queen"

Otra forma sería usar paste

> S <- paste0(strReverse(strg), "ueen")
> gsub("Q", " Q", S)
[1] "7 Queen" "2 Queen"

Otros consejos

regex

(Q)(\d)

Reemplazar regex

$2 Queen

Visualización de expresión regular

DEMO DEBUGGEX

Descripción

1st Capturing group (Q)
    Q matches the character Q literally (case insensitive)
2nd Capturing group (\d)
    \d match a digit [0-9]
g modifier: global. All matches (don't return on first match)
i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])

Nota: necesitaría uno de estos para cada letra

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top