J'ai une variable x qui est une série de caractères tels que:
"WW", "BT", "BS", "EW", "B"
À partir de là, je dois extraire les caractères avant le premier caractère numérique pour obtenir par exemple
"W", "BT", "BS", "E", "B"
J'ai essayé de parcourir les questions précédentes et j'ai trouvé:
gsub ("[^ a-zA-Z]", "", x) code >
mais cela garde les caractères de texte après le caractère numérique et donne:
"W1W", "BT3", "BS5", "E1W", "B68"
Existe-t-il un moyen d'obtenir uniquement les caractères de texte avant le caractère numérique et tout abandonner par la suite?
4 Réponses :
Vous pouvez utiliser
sub("^(\\D*)\\d.*", "\\1", x)
S'il doit y avoir un chiffre et que les chiffres peuvent être au début (et vous avez alors besoin de valeurs vides), utilisez
sub("^(\\D+).*", "\\1", x)
^
- début de chaîne (\ D *)
- 0+ symbole non numérique \ d
- un chiffre . *
- 0 ou plus de caractères à la fin de la chaîne En utilisant x
dans la note à la fin, supprimez tout à partir du premier chiffre:
x <- c("W1W", "BT3", "BS5", "E1W", "B68")
sub("\\d.*", "", x) ## [1] "W" "BT" "BS" "E" "B"
x <- c("W1W", "BT3", "BS5", "E1W", "B68") library(stringr) str_extract(x, "^\\D+") # [1] "W" "BT" "BS" "E" "B"
Utilisation de regmatches / regexpr
à partir de base R
x <- c("W1W", "BT3", "BS5", "E1W", "B68")
regmatches(x, regexpr("\\D+(?=\\d)", x, perl = TRUE)) #[1] "W" "BT" "BS" "E" "B"
p>