首页 > 解决方案 > 有没有办法选择性地应用这个 stringr 函数?

问题描述

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

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在字符串内。

有没有办法调整这个脚本,以便它检测s 中的匹配项,同时忽略在字符串的所需部分附加了字母的字符串?换句话说,AL如果字母字母与字符串相邻,这是否可以检测到部分字符串的任一侧可能存在空格或标点符号而忽略匹配?

提前致谢。

标签: rdata-manipulationstringr

解决方案


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

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

使用\\bwhich 是一个边界条件,因此如果它后面/前面有一个单词或根据文档,它不匹配任何内容:符号 \b 匹配单词任一边缘的空字符串


推荐阅读