【问题标题】:How can I remove parts of string based on other column in R?如何根据 R 中的其他列删除部分字符串?
【发布时间】:2021-04-19 03:20:27
【问题描述】:

我想删除字符串的一部分(基于另一列),我对字符串的其余部分感兴趣...

例子:

  dt <- data.frame(SomeText = c("ABCDEF", "ABCDEF", "ABCDEF"), 
                   ToRemove = c("A", "CDE", ""), 
                   WantedResult = c("BCDEF", "ABF", "ABCDEF"))

>   dt
  SomeText ToRemove WantedResult
1   ABCDEF        A        BCDEF
2   ABCDEF      CDE          ABF
3   ABCDEF                ABCDEF

因此(以第 2 行为例),从 'ABCDEF' 中删除 'CDE' 所以我们剩下的是 'ABF'

【问题讨论】:

    标签: r string gsub


    【解决方案1】:

    ^$替换空模式

    dt$ToRemove[dt$ToRemove == ''] <- '^$'
    

    然后使用矢量化的stringr::str_remove

    dt$result <- stringr::str_remove(dt$SomeText, dt$ToRemove)
    dt
    #  SomeText ToRemove result
    #1   ABCDEF        A  BCDEF
    #2   ABCDEF      CDE    ABF
    #3   ABCDEF       ^$ ABCDEF
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      相关资源
      最近更新 更多