我正在使用grep来整理一些地址数据,我的目标特别是在给定的记录和列中识别街道/大道/道路名称等,这已经被空间分割成单个词语的以下变量tempval,例如:R:使用grep按重要性排序查找一个或几个匹配项
R > tempval
[1] "38" "WILLOW" "PARK"
我用下面的语句来发现其中一些将按照街道名称可能是一句话:
stID <- grep("STREET|\\bST\\b|AVENUE|\\bAVE\\b|\\bAV\\b|WAY|BOULEVARD|\\bBD\\b|ROAD|\\bRD\\b|PLACE|\\bPL\\b|ESPLANADE|TERRACE|PARADE|DRIVE|\\bDR\\b|\\bPARK\\b|LANE|CRESCENT|\\bCOURT\\b|b\\CRES\\b", tempval, ignore.case = T)
R > stID
[1] 3
Th是好的,我知道“PARK”是第三个元素,之前会有什么是我的街道号码和名称。
然而,当有多个匹配如此length(stID) > 1
,例如一个问题出现了:所以在这里
R > tempval
[1] "38" "PARK" "ST"
,我得到
R > stID
[1] 2 3
如何获得R返回只有一个匹配,在重要性顺序(我将字符串放在grep模式中的顺序)?换句话说,如果R找到“ST”和“PARK”,“ST”比“PARK”更重要,因此只返回stID = 3
?
非常好,谢谢! grep是第一个想到的工具,但是按照重要性顺序使用与字符串矢量匹配是完全有意义的。 – Neodyme