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
3 Réponses :
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"
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) )
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')
regmatches(x, regexpr("CAT-?\\d+", x)) #[1] "CAT01" "CAT013" "CAT0155" "CAT-01" "CAT-013" "CAT-0155"
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