2013-10-10 5 views
0

У меня есть набор данных о ресторанах, а переменная «CONAME» содержит имя каждого заведения. К сожалению, есть немало орфографических ошибок, и я бы хотел их исправить. Я попытался agrep для нечеткого множества согласования, используя следующий код (который я буду повторять для всех основных цепей):Заменить орфографические значения с помощью agrep

rest2012 $ CONAME < - agrep ("Макдональдс", rest2012 $ CONAME, ignore.case = FALSE, значение = FALSE, max.distance = 3)

Я получаю следующее сообщение об ошибке: Ошибка в $<-.data.frame (*tmp*, "CONAME", значение = с (35L, 40L, 48L,: замена имеет 3074 строки, данные 67424

Есть ли еще один ва y Я могу заменить имена с ошибками или я просто использую функцию agrep неправильно?

+2

Прочитать сообщение об ошибке. Вы пытаетесь заменить колонку ** всего ** (67424 пунктов) только теми, которые написаны с ошибками (3074). –

+0

@ user2868256, мой ответ решил вашу проблему? – Henrik

ответ

1

При использовании agrep с value = FALSE результатом является «вектор, дающий индексы элементов, которые дали совпадение». То есть, положение совпадений в векторе имен, которые вы подали agrep с. Затем попробуйте заменить имя переменнойвсего в кадре данных (67424 строк) с коротким вектором индексов (3074 из них). Не то, что вы хотите. Вот небольшой пример, который, возможно, поможет вам в правильном направлении. Вы также можете прочитать ?Extract и this. Детали самого agrep (например, 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 

 Смежные вопросы

  • Нет связанных вопросов^_^