Есть несколько строк, которые показывают следующий шаблон
ABC, DEF.JHI
AB,DE.(JH)
Как правило, он включает в себя три секции, которые разделены ,
и .
Последний символ может быть либо нормальным, либо sth like )
. Я хотел бы извлечь последнюю часть. Например, я хотел бы создать следующие две строки, основанные на приведенных выше
JHI
(JH)
Есть ли способ сделать это в R?
library(stringr)
str1 <- c("ABC, DEF.JHI","AB,DE.(JH)")
str_extract(str1,perl('(?<=\\.).*'))
#[1] "JHI" "(JH)"
(?<=\\.)
искать .
а затем .*
все символы
Вы можете просто разделить на .
используя strsplit
и извлеките второй элемент.
str1 <- c("ABC, DEF.JHI","AB,DE.(JH)")
unlist(lapply(strsplit(str1, "\\."), "[", 2))
# [1] "JHI" "(JH)"
Здесь другая возможность:
sapply(strsplit(str1, "\\.\\(|\\.|\\)"), "[[", 2)
Riffing на @josiber ответ вы можете удалить часть строки до .
str1 <- c("ABC, DEF.JHI","AB,DE.(JH)")
gsub(".*\\.", "", str1)
# [1] "JHI" "(JH)"
РЕДАКТИРОВАТЬ
Если вашему третьему элементу не всегда предшествует a .
, для извлечения финальной части
str1 <- c("ABC, DEF.JHI","AB,DE.(JH)", "ABC.DE, (JH)")
gsub(".*[,.]", "" , str1)
# [1] "JHI" "(JH)" " (JH)"