1
votes

Comment extraire tout le texte avant le premier caractère numérique uniquement dans R

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?


0 commentaires

4 Réponses :


0
votes

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


0 commentaires

0
votes

En utilisant x dans la note à la fin, supprimez tout à partir du premier chiffre:

x <- c("W1W", "BT3", "BS5", "E1W", "B68")

Remarque

sub("\\d.*", "", x)
## [1] "W"  "BT" "BS" "E"  "B" 


0 commentaires

0
votes
x <- c("W1W", "BT3", "BS5", "E1W", "B68")

library(stringr)

str_extract(x, "^\\D+")

# [1] "W"  "BT" "BS" "E"  "B" 

0 commentaires

0
votes

Utilisation de regmatches / regexpr à partir de base R

x <- c("W1W", "BT3", "BS5", "E1W", "B68")

données

regmatches(x, regexpr("\\D+(?=\\d)", x, perl = TRUE))
#[1] "W"  "BT" "BS" "E"  "B" 

p>


0 commentaires