我有一个调查数据集,其中受访者描述了他们活动的位置,通常是城镇或城市名称。我想识别命名城市的每个唯一提及并计算每个城市被提及的次数。最终输出应该是一个向量,其中包含每个城市被提及的次数。一个挑战是城市名称可能拼写错误、大小写奇怪或嵌入更长的字符串中(其中可能还包括多个城市)。我有一个具有正确大小写和拼写的城市名称的主列表,我一直在尝试将其用作 agrep 函数的模式。
数据集的一个样本块的结构如下:
survey <- c("Salem", "salem, ma","Manchester","Manchester-By-The-Sea")
master <- c("Beverly","Gloucester","Manchester-by-the-Sea","Nahant","Salem")
在此示例中,最终结果将是一个向量:
result
[1] 0 0 2 0 2
我一直在尝试使用 agrep 构造一个函数来遍历主向量,以便它在调查向量中搜索匹配项,计算匹配项的数量,然后输出主向量的每个项目的匹配项数。这是我到目前为止所拥有的,但我得到的都是NULL。不确定我做错了什么和/或是否有更好的方法来解决这个问题。
idx <- NULL
matches <- NULL
n.match <- function(pattern, x, ...) {
for (i in 1:length(pattern))
idx <- vector()
idx <- agrep(pattern[i],x,ignore.case=TRUE, value=FALSE, max.distance = 2)
matches[i] <- length(idx)
}
n.match(master,survey)
matches