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