【问题标题】:Extracting a specific format substring (ID, code) from a string using R使用 R 从字符串中提取特定格式的子字符串(ID、代码)
【发布时间】:2015-05-11 16:02:09
【问题描述】:

假设我有一个由我使用 twitteR 收集的推文组成的数据框。我想提取一个子字符串,它是每个推文中包含的另一个数据集的唯一 ID。所有 ID 的格式相同,3-4 个大写字母,后跟一个连字符,后跟一个 6 位数字。例如:YLD-000123、YLSL-000323、YLP-000135。我只需要 ID,并且可以在每条推文上删除其他所有内容。

以下是我正在使用的推文的两个示例:

  st1="Elijo ENTERTIMER, YLC-000354, como ganador para  http://t.co/jclDk8d796 #YoungLionsCo #FantasyLions"
st2="Elijo #AEseTrenNoMeLeSubo, YLSL-000169, como ganador para  http://t.co/wPpM7X5ecN #YoungLionsCo #FantasyLions"
tweets=c(st1,st2)

我需要的结果是“YLC-000354”“YLSL-000169”。 ID 并不总是在逗号之间。

【问题讨论】:

    标签: r string twitter substring


    【解决方案1】:

    一种使用gsub的方法:

    gsub('.*[^[:alpha:]]([[:alpha:]]+-\\d+).*','\\1',tweets)
    #[1] "YLC-000354"  "YLSL-000169"
    

    【讨论】:

      【解决方案2】:

      看起来您需要正则表达式,请参阅?regex 以供参考。

      如果 ID 中只包含大写字母,您正在寻找的模式是 '[[:alpha:]]{3,4}-[[:digit:]]{6}',最终使用 upper 而不是 alpha。可以考虑在模式末尾添加空格字符和句点/空格来消除一些 ID 相似。

      要从推文向量中提取所有 ID,我建议使用来自 stringr 库的 str_extract

      【讨论】:

        【解决方案3】:
        gsub('.*(\\b\\w+\\-\\d+).*','\\1',tweets)
        # [1] "YLC-000354"  "YLSL-000169"
        

        【讨论】:

          猜你喜欢
          • 2017-12-21
          • 2019-12-02
          • 2022-12-18
          • 2019-10-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多