在R dataframe列中提取部分字符串

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (200)

我试图在R中的一列中扩展一个字符串的一部分ID。我想写一个表达式,它将从IAB开始以数字结尾提取艺术品。我该怎么做?

样本字符串:

[31] "{\"\"element\"\":\"\"IAB1_4\"\"}"  
[32] "{\"\"element\"\":\"\"IAB19_3\"\"}" 
[33] "{\"\"element\"\":\"\"IAB19_16\"\"}"
[34] "{\"\"element\"\":\"\"IAB9_11\"\"}" 
[35] "{\"\"element\"\":\"\"IAB19_5\"\"}" 
[36] "{\"\"element\"\":\"\"IAB18_1\"\"}"

我只需要提取以IAB开头并以数字结尾的部分。我怎么能这样做?

提问于
用户回答回答于

我们可以使用str_extract匹配一个或多个数字(\\d+)后面的字符串'IAB'后跟一个下划线(_)和一个或多个数字(\\d+

library(stringr)
str_extract(v1, 'IAB\\d+_\\d+')
#[1] "IAB1_4"   "IAB19_3"  "IAB19_16" "IAB9_11"  "IAB19_5"  "IAB18_1" 

或者regexpr来自base R

regmatches(v1, regexpr('IAB\\d+_\\d+', v1))
#[1] "IAB1_4"   "IAB19_3"  "IAB19_16" "IAB9_11"  "IAB19_5"  "IAB18_1" 

数据

v1 <- c("{\"\"element\"\":\"\"IAB1_4\"\"}", "{\"\"element\"\":\"\"IAB19_3\"\"}", 
"{\"\"element\"\":\"\"IAB19_16\"\"}", "{\"\"element\"\":\"\"IAB9_11\"\"}", 
"{\"\"element\"\":\"\"IAB19_5\"\"}", "{\"\"element\"\":\"\"IAB18_1\"\"}"
)

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励