1
votes

Comment sous-définir une chaîne dans R

Cher tout, j'ai un vecteur de chaînes comme:

CAT01
CAT013
CAT0155

Je veux sous-ensemble chaque valeur obtenir seulement CAT et tout le nombre après:

LOCAT01PE
WECAT013EJD
AFECAT0155DR


0 commentaires

3 Réponses :


2
votes

En base R, on peut utiliser sub pour extraire "CAT" suivi de nombres.

stringr::str_extract(x, "CAT\\d+")

Ou similaire avec str_extract

x <- c('LOCAT01PE', 'WECAT013EJD', 'AFECAT0155DR')
sub('..*(CAT\\d+).*', '\\1', x)
#[1] "CAT01"   "CAT013"  "CAT0155"


0 commentaires

1
votes

Nous pouvons également utiliser substr avec regexpr pour identifier les points de démarrage / d'arrêt pertinents dans la chaîne:

[1] "CAT01"   "CAT013"  "CAT0155"

Résultat: p>

substr(vec,
       start = regexpr('CAT', vec),
       stop = regexpr('\\d[a-zA-Z]', vec)
       )


0 commentaires

1
votes

Nous pouvons utiliser regexpr / regmatches dans base R . Il correspond au mot 'CAT' suivi de - s'il y a un ? et un ou plusieurs chiffres ( \\ d + )

x <- c('LOCAT01PE', 'WECAT013EJD', 'AFECAT0155DR', 
    'LO-CAT-01PE', 'WE-CAT-013-EJD', 'AFE-CAT-0155-DR')

data

regmatches(x, regexpr("CAT-?\\d+", x))
#[1] "CAT01"    "CAT013"   "CAT0155"  "CAT-01"   "CAT-013"  "CAT-0155"


1 commentaires

x <- c ('LO-CAT-01PE', 'WE-CAT-013-EJD', 'AFE-CAT-0155-DR') Comment la commande changera si j'ai "- "avant et après CAT? je vous remercie beaucoup pour votre aide