如何根据 R 中的其他列删除部分字符串?
How can I remove parts of string based on other column in R?
我想删除字符串的一部分(基于另一列)并且我对字符串的其余部分感兴趣...
示例:
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'
将空模式替换为 ^$
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
我想删除字符串的一部分(基于另一列)并且我对字符串的其余部分感兴趣...
示例:
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'
将空模式替换为 ^$
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