使用多个定界符R分割字符串

时间:2019-11-26 16:27:00

标签: r split

在此之前也曾问过类似的问题,但这些符号使我感到困惑。这是我拥有的示例数据集。

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

您对我有什么想法和一些有用的材料,以供我阅读有关此字符串文档的内容吗?

谢谢!

1 个答案:

答案 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