【问题标题】:Extract string after pattern to unknown stop point在模式后提取字符串到未知停止点
【发布时间】:2020-04-25 18:45:51
【问题描述】:

在数据框中,我有一个名为 buckets 的列,其中包含符合以下模式的行:

{"21-45":1,"541-600":2,"46-60":2,"721-840":2,"1201-1320":1 }

{"21-45":7,"481-540":10,"541-600":6,"46-60":2,"721-840":2 }

{"481-540":1,"301-360":1,"10}

{"481-540":1,"21-45":200,"721-840":1,"

我希望提取遵循模式“21-45”的数字:

所以我会留下:

1

7

10

200

模式 "21-45": 可以出现在字符串中的任何位置,其后的位数各不相同,可能以“,”或“}”结尾。

数据框非常大,所以我想尽可能节俭地完成这项工作。我不知道解决这个问题的最佳方法是什么。

谢谢。

【问题讨论】:

    标签: r string text-extraction


    【解决方案1】:

    我们可以使用str_extract

    library(stringr)
    as.numeric(str_extract(str1, '(?<=21-45":)\\d+'))
    #[1]   1   7  10 200
    

    数据

    str1 <- c("{\"21-45\":1,\"541-600\":2,\"46-60\":2,\"721-840\":2,\"1201-1320\":1}", 
    "{\"21-45\":7,\"481-540\":10,\"541-600\":6,\"46-60\":2,\"721-840\":2}", 
    "{\"481-540\":1,\"301-360\":1,\"<20\":2,\"61-120\":1,\"21-45\":10}", 
    "{\"481-540\":1,\"21-45\":200,\"721-840\":1,\"<20\":3,\"61-120\":2}"
    )
    

    【讨论】:

    • 胜利!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 2012-02-28
    • 1970-01-01
    • 2013-01-08
    相关资源
    最近更新 更多