首页 > 解决方案 > 在 R 中,使用 gsub 从字符串中删除子字符串模式

问题描述

我们的数据库中有一个字符串列,其中包含运动队的值。这些团队的名称有时会以团队排名为前缀,例如:(13) Miami (FL). 这里的 13 是迈阿密的排名,而 (FL) 表示这是佛罗里达州的迈阿密,而不是俄亥俄州的迈阿密 ( Miami (OH)):

我们需要清理这个字符串,(13) 只删除和保留Miami (FL). 到目前为止,我们已经使用gsub并尝试了以下内容:

> gsub("\\s*\\([^\\)]+\\)", "", "(13) Miami (FL)")
[1] " Miami"

这错误地删除了 (FL) 后缀,并且它也没有正确处理前面的空白。

编辑

这里有一些额外的学校名称,以显示我们正在使用的数据。请注意,并非每所学校都有 (##) 前缀。:

c("North Texas", "Southern Methodist", "Texas-El Paso", 
  "Brigham Young", "Winner", "(12) Miami (FL)", "Appalachian State", 
  "Arkansas State", "Army", "(1) Clemson", 
  "(14) Georgia Southern")

标签: rstringgsub

解决方案


您可以使用sub删除括号中的数字,后跟空格。

sub("\\(\\d+\\)\\s", "", "(13) Miami (FL)")
#[1] "Miami (FL)"

正则表达式可以根据数据中的模式变得更严格。


推荐阅读