Respressione regolare: sostituire l'intero elenco delle stringhe con informazioni più specifiche
Domanda
Se ho dati con una variabile categoriale che presenta elementi come "Q7", "Q2"
, ecc., Come lo sostituisco con "7 Queen", "2 Queen"
, ecc.?
Soluzione
Per gli antipasti, otterrai il massimo dalla possibilità di fare una domanda se includi anche il codice per quello che hai già provato.Questo detto ...
Forse non è il modo più efficace per risolvere questo problema per i set di dati di grandi dimensioni, ma questi due metodi sembrano funzionare bene solo per il tuo esempio.example(strsplit)
ha una bella funzione di inversione di stringa che possiamo mettere in uso.
> 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"
.
Un altro modo sarebbe quello di utilizzare paste
> S <- paste0(strReverse(strg), "ueen")
> gsub("Q", " Q", S)
[1] "7 Queen" "2 Queen"
. Altri suggerimenti
regex
(Q)(\d)
.
Sostituisci Regex
$2 Queen
.
Descrizione
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: Hai bisogno di uno di questi per ogni lettera