【问题标题】:Extract part of string in R dataframe column在 R 数据框列中提取部分字符串
【发布时间】:2019-06-25 00:48:26
【问题描述】:

我正在尝试提取一个 ID,它是 R 中一列中字符串的一部分。我想编写一个表达式来提取以 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 开头并以数字结尾的部分。我怎么能这样做?

【问题讨论】:

  • 看起来几乎像 JSON 字符串。如果您正在处理这样的数据,可能值得看看 jsonlite 包。

标签: r regex string dplyr


【解决方案1】:

我们可以使用str_extract 来匹配字符串“IAB”后面的一个或多个数字(\\d+),后跟一个下划线(_)和一个或多个数字(\\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\"\"}"
)

【讨论】:

    猜你喜欢
    • 2021-05-30
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 2018-02-19
    • 2015-09-19
    • 1970-01-01
    相关资源
    最近更新 更多