Expressão Regular R:Substitua toda a lista de strings por informações mais específicas

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

  •  21-12-2019
  •  | 
  •  

Pergunta

Se eu tiver dados com uma variável categórica que contenha elementos como "Q7", "Q2", etc., como faço para substituí-lo por "7 Queen", "2 Queen", etc.?

Foi útil?

Solução

Para começar, você aproveitará ao máximo fazer uma pergunta se também incluir o código do que já tentou.Dito isto...

Talvez não seja a maneira mais eficiente de resolver esse problema para grandes conjuntos de dados, mas esses dois métodos parecem funcionar muito bem no seu exemplo. example(strsplit) tem uma ótima função de reversão de strings 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"

Outra forma seria usar paste

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

Outras dicas

Regex

(Q)(\d)

Substituir Regex

$2 Queen

Regular expression visualization

Demonstração de Debuggex

Descrição

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])

Observação: Você precisaria de um desses para cada letra

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top