Regulärer R-Ausdruck:Ersetzen Sie die gesamte Zeichenfolgenliste durch spezifischere Informationen
Frage
Wenn ich Daten mit einer kategorialen Variablen habe, die Elemente enthält wie "Q7", "Q2"
, usw., wie ersetze ich es durch "7 Queen", "2 Queen"
, usw.?
Lösung
Zunächst einmal können Sie eine Frage am besten stellen, wenn Sie auch den Code für das angeben, was Sie bereits versucht haben.Das gesagt...
Vielleicht nicht die effizienteste Methode, dieses Problem für große Datenmengen zu lösen, aber diese beiden Methoden scheinen in Ihrem Beispiel gut zu funktionieren. example(strsplit)
hat eine nette String-Umkehrfunktion, die wir nutzen können.
> 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"
Eine andere Möglichkeit wäre die Verwendung paste
> S <- paste0(strReverse(strg), "ueen")
> gsub("Q", " Q", S)
[1] "7 Queen" "2 Queen"
Andere Tipps
Regex
(Q)(\d)
Ersetzen Sie Regex
$2 Queen
Beschreibung
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])
Notiz: Sie benötigen für jeden Buchstaben eines davon
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow