Как поместить строку в R - PullRequest
       55

Как поместить строку в R

1 голос
/ 07 марта 2020

Уважаемые все, у меня есть вектор строк, например:

LOCAT01PE
WECAT013EJD
AFECAT0155DR

Я хочу подмножество каждого значения получить только CAT и все числа после:

CAT01
CAT013
CAT0155

Я пытался используйте команду substr, но она не будет работать, поскольку количество до слова CAT не является фиксированным, а числа после CAT не являются фиксированными.

Ответы [ 3 ]

2 голосов
/ 07 марта 2020

В базе R мы можем использовать sub для извлечения "CAT", за которым следуют числа.

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

или аналогично str_extract

stringr::str_extract(x, "CAT\\d+")
1 голос
/ 07 марта 2020

Мы можем использовать regexpr/regmatches в base R. Он соответствует слову «CAT», за которым следует -, если есть какие-либо ? и одна или несколько цифр (\\d+)

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

data

x <- c('LOCAT01PE', 'WECAT013EJD', 'AFECAT0155DR', 
    'LO-CAT-01PE', 'WE-CAT-013-EJD', 'AFE-CAT-0155-DR')
1 голос
/ 07 марта 2020

Мы также можем использовать substr с regexpr для определения соответствующих точек начала / остановки в строке:

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

Вывод:

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