Dataframe 有没有一种方法可以选择性地应用这个stringr函数?

Dataframe 有没有一种方法可以选择性地应用这个stringr函数?,dataframe,string,r,data-manipulation,stringr,regex,Dataframe,String,R,Data Manipulation,Stringr,Regex,我有一组用户,其中一列包含他们自我报告的位置。因此,报告的某些位置毫无意义,但在将此列与已知位置的其他列进行匹配时,可能会导致误报。下面是数据帧的示例 data <- data.frame(X = (1:5), Y = c("", "Washington, DC", "Huntsville, AL", "Mobile,AL", "ALL OVER")) 这导致Huntsville和Mobile被正确识别为阳性,但由于字符串中的AL,第三个匹配的ALL被错误识别为匹配 data$match

我有一组用户,其中一列包含他们自我报告的位置。因此,报告的某些位置毫无意义,但在将此列与已知位置的其他列进行匹配时,可能会导致误报。下面是数据帧的示例

data <- data.frame(X = (1:5), Y = c("", "Washington, DC", "Huntsville, AL", "Mobile,AL", "ALL OVER"))
这导致Huntsville和Mobile被正确识别为阳性,但由于字符串中的
AL
,第三个匹配的
ALL
被错误识别为匹配

data$match_ab <- str_extract(data[,2], str_c("AL$", collapse = "|")); data;

  X              Y match_ab
1 1                    <NA>
2 2 Washington, DC     <NA>
3 3 Huntsville, AL       AL
4 4      Mobile,AL       AL
5 5       ALL OVER     <NA>
是否有方法调整此脚本,以便它在忽略字符串中所需部分附加字母的字符串时检测s中的匹配?换句话说,如果字母与字符串相邻,则在忽略匹配的情况下,当部分字符串的任一侧可能有空格或标点符号时,这能否检测到
AL


提前谢谢。

如果我理解正确,这对你有用吗:

data$match_ab <- str_extract(data[,2], "\\bAL\\b")

data$match\u ab在特定位置稍微调整一下匹配:在
search\u项
之后添加
$
,这是一个指定:如果只在字符串末尾出现,则需要匹配

data$match_ab <- str_extract(data[,2], str_c("AL$", collapse = "|")); data;

  X              Y match_ab
1 1                    <NA>
2 2 Washington, DC     <NA>
3 3 Huntsville, AL       AL
4 4      Mobile,AL       AL
5 5       ALL OVER     <NA>

data$match\u ab我们也可以使用
stri\u extract
from
stringi

library(stringi)
data$match_ab <- stri_extract(data[,2], regex = "\\bAL\\b") 
库(stringi)
数据$match_ab
library(stringi)
data$match_ab <- stri_extract(data[,2], regex = "\\bAL\\b")