R函数,用于查找和删除具有给定数值范围的字符串



我有一个名为"编辑地址";在名为CB_Edit的df中。在";编辑地址";列有许多地址。有些地址包括一个变量("L#"),我想从所有拥有它的地址中完全删除它。例如:

edited_address:

100 S Smith Street
200 S Smith L100 Street
300 S Smith Street
400 S L1 Smith Street
500 S Smith Street L999
600 N Jacobs Blvd
900 L53 Cascades Street

我想删除";L#";从列中删除。有两个问题。第一个是L后面的数字范围在0-9999之间。第二个是L#可以在列单元格中的任何位置。让我知道我能做什么,谢谢!

作为一个方面,这个问题有很多异常值,这里有一些例子。这些数字范围为1-999,并且具有a-Z的第二个字母。这些第二个字母有时也有自己的编号范围:

L1A thru L9999Z
as well as 
L1A1 thru L9999Z9999

我已经尝试了几个gsub函数,希望能够捕获该范围内的所有内容。这并没有发生。

对于基本R选项,我们可以对sub()使用以下方法:

df$edited_address <- gsub("^\s+|\s+$", "", sub("\s*\bL\d{1,4}\b\s*", " ", df$edited_address))
df
edited_address
1 100 S Smith Street
2 200 S Smith Street
3 300 S Smith Street
4 400 S Smith Street
5 500 S Smith Street

对于您更新的问题,我将匹配以下正则表达式模式:

s*bLd{1,4}(?:[A-Z]d{0,4})?bs*

最新更新