首页 > 解决方案 > 使用多个分隔符拆分字符串 R

问题描述

之前在这里问过类似的问题,但这些符号让我很困惑。这是我拥有的示例数据集。

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

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

谢谢!

标签: rsplit

解决方案


我们可以尝试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

推荐阅读