如何使用R中的gsub替换_A_& _B_

时间:2018-05-17 14:18:51

标签: gsub

我正在尝试从R上的两个不同数据表中加入包含公司名称的两列。在一列中,我有模式_A_&_B_,其中A和B可以是任何字母。我想摆脱那两个字母,即由_

包围的长度为1的字母

所以,如果我有John_K_&_E_Scott,我希望John__&__Scott,因为我可以删除标点符号。我试过下面的

names[, JOINING_ID := gsub("[A-Za-z]_&_[A-Za-z]\\w", "", JOINING_ID)] 

但这会转换John_A_&_ BOYS_中的John__&_ OYS_,这不是我想要的。

1 个答案:

答案 0 :(得分:0)

使用以下正则表达式模式:

_[[:alpha:]]_&_[[:alpha:]]_

并替换为__&__。见the regex demo。它不会匹配像John_A_&_BOYS_这样的字符串,因此不会出现类似你所拥有的问题。

请注意,[[:alpha:]]匹配任何字母。

R用法:

gsub("_[[:alpha:]]_&_[[:alpha:]]_", "__&__", JOINING_ID)

或者,如果您只希望每个字符串匹配一次,请使用sub

sub("_[[:alpha:]]_&_[[:alpha:]]_", "__&__", JOINING_ID)