用agrep替换拼写错误的值

时间:2013-10-10 17:59:31

标签: r replace subset misspelling agrep

我有一个餐馆数据集,变量“CONAME”包含每个企业的名称。不幸的是,有很多拼写错误,我想纠正它们。我使用以下代码尝试使用agrep进行模糊集匹配(我将对所有主链进行重复):

  

rest2012 $ CONAME< - agrep(“MC DONALD'S”,rest2012 $ CONAME,ignore.case = FALSE,value = FALSE,max.distance = 3)

我收到以下错误消息: $<-.data.frame中的错误(*tmp*,“CONAME”,值= c(35L,40L,48L,:   替换有3074行,数据有67424

我是否有其他方法可以替换拼写错误的名称,或者我只是简单地使用agrep函数?

1 个答案:

答案 0 :(得分:1)

agrepvalue = FALSE一起使用时,结果是“一个向量,给出了产生匹配的元素的索引”。也就是说,您向agrep提供的名称向量中的匹配位置。然后尝试使用较短的索引 整个名称变量 >(其中3074个)。不是你想要的。这是一个小例子,也许可以指导你正确的方向。您还可以阅读?Extractthisagrep本身的详细信息(例如max.distance),我留给您。

# create a data frame with some MC DONALD's-ish names, and some other names.
rest2012 <- data.frame(CONAME = c("MC DONALD'S", "MCC DONALD'S", "SPSS Café", "GLM RONALDO'S", "MCMCglmm"))
rest2012

# do some fuzzy matching with 'agrep'
# store the indices in an object named 'idx'
idx <- agrep(pattern = "MC DONALD'S", x = rest2012$CONAME, ignore.case = FALSE, value = FALSE, max.distance = 3)
idx

# just look at the rows in the data frame that matched
# indexing with a numeric vector 
rest2012[idx, ]

# replace the elements that matches 
rest2012[idx, ] <- "MC DONALD'S"
rest2012