我有一个 dataframe的用户,其中一列包含他们 self 报告的位置。因此,报告的某些位置是无意义的,但在将此列与已知位置的其他列匹配时可能会导致误报。下面是数据框的示例。
data <- data.frame(X = (1:5), Y = c("", "Washington, DC", "Huntsville, AL", "Mobile,AL", "ALL OVER"))
有了这些数据,我然后运行下面的代码来建立与 AL
的匹配。
library(stringr)
data$match_ab <- str_extract(data[,2], str_c("AL", collapse = "|"))
这导致 Huntsville 和 Mobile 被正确识别为阳性,但 ALL OVER
的第三个匹配项由于字符串中的 AL
而错误地识别为匹配项。
有没有办法调整这个脚本,以便它检测 string 内的匹配项? s 同时忽略字符串所需部分附有字母的字符串?换句话说,这是否可以检测 AL
而部分字符串的两边可能有空格或标点符号,而如果字母与字符串相邻则忽略匹配?
提前致谢。
最佳答案
如果我理解正确的话,这对你有用吗:
data$match_ab <- str_extract(data[,2], "\\bAL\\b")
使用 \\b
这是一个边界条件,因此如果它后面/前面有一个单词,则它不匹配任何内容或根据文档:符号\b 匹配单词任一边缘的空字符串
关于r - 有没有办法选择性地应用这个 stringr 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61274686/