【问题标题】:R - Conditional Substr from dataframeR - 来自数据帧的条件 Substr
【发布时间】:2015-09-06 03:34:54
【问题描述】:

我需要从基于开始和结束位置的列中提取。开始和结束位置来自字符搜索。

例如,Dataframe 中的单列有 3 行:

'Bond, Mr. :James'
'Woman, Mrs. :Wonder'
'Hood, Mr. :Robin'

第 2 列中的预期答案是:

'Mr.'
'Mrs.'
'Mr.'

我想为第 1 列提取 ',' 和 ':' 之间的所有字符串。

【问题讨论】:

    标签: r dataframe character substring substr


    【解决方案1】:

    试试gsub(".*, | :.*", "", myvec)

    【讨论】:

      【解决方案2】:

      您可以使用 stringr 包执行常见的字符串操作,如修剪、子字符串或提取模式:

      library(stringr)
      str_trim(str_sub(str_extract(x, ",[^:]*"), 2))
      # [1] "Mr."  "Mrs." "Mr." 
      

      【讨论】:

        【解决方案3】:

        还有:

        str_extract(x, 'Mr(s?).')
        

        @akrun 有一个建议可以帮助处理更多案例。

        str_extract(myvec, '\\S+(?=\\s*:)')
        

        通过指定非空格字符后跟一个或多个空格和一个冒号,正则表达式模式将捕获各种标题和敬语。

        【讨论】:

        • @akrun 我发现大多数正则表达式问题都受到 OP 示例的限制。如果存在异常示例,为什么要发布相同布局的三个示例?通过展示一些多样性,可以产生有针对性的帮助。
        • 我同意。也许,我希望寻求者付出更多的努力来更好地描述他们的问题。
        猜你喜欢
        • 2017-11-10
        • 2013-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多