在此之前也曾问过类似的问题,但这些符号使我感到困惑。这是我拥有的示例数据集。
id <- c(1,2)
form <- c("AA-BB-c2C-Dat-D-SP18-CC", "AA::B2S::DD::C::SP17::GG")
data <- data.frame(id, form)
> data
id form
1 1 AA-BB-c2C-Dat-D-SP18-CC
2 2 AA::B2S::DD::C::SP17::GG
第一行有7个对象,以“-”分隔,第二行有6个对象,以“ ::”分隔。我想抓取倒数第二个对象(SP18和SP19)的数值,如下所示。
> data
id form sub.form
1 1 AA-BB-c2C-Dat-D-SP18-CC 18
2 2 AA::B2S::DD::C::SP17::GG 17
您对我有什么想法和一些有用的材料,以供我阅读有关此字符串文档的内容吗?
谢谢!
答案 0 :(得分:3)
我们可以在此处尝试使用sub
作为基本的R选项:
data$sub.form <- sub("^.*\\bSP(\\d+)\\b.*$", "\\1", data$form)
data
id form sub.form
1 1 AA-BB-c2C-Dat-D-SP18-CC 18
2 2 AA::B2S::DD::C::SP17::GG 17