Я пытаюсь использовать библиотеку ('RecordLinkage') и функцию compare.dedup() для замены повторяющихся значений в одном столбце.Заменить повторяющиеся значения из столбца dataframe с использованием нечеткого соответствия
Подобно этому post, у меня есть один вектор
tv3 = c("TOURDEFRANCE", 'TOURDEFRANCE', "TOURDE FRANCE", "TOURDE FRANZ", "GET FRESH")
и выход я хочу следующее, основываясь на заданном значении веса (например,> 0,8):
("TOURDEFRANCE", 'TOURDEFRANCE', "TOURDEFRANCE", "TOURDEFRANCE", "GET FRESH")
Вот код, который я пытался получить в соответствии с данными:
tv3 = as.data.frame(c("TOURDEFRANCE", 'TOURDEFRANCE', "TOURDE FRANCE",
"TOURDE FRANZ", "GET FRESH"))
colnames(tv3) <- "name"
tv3 %>% compare.dedup(strcmp = TRUE) %>%
epiWeights() %>%
epiClassify(0.8) %>%
getPairs(show = "links", single.rows = TRUE) -> matches
Однако, чтобы получить то, что мне нужно, я использовал t он ниже петли:
matches <- matches[order(matches$id1),]
tv3new <- tv3
for (i in 1:nrow(matches)) {
tv3new[tv3new$name==matches[i,'name.2'],] <- matches[i,'name.1']
}
tv3new
Это дает мне то, что я хочу, но интересно, если с помощью цикла является лучшим способом сделать это, или если я что-то очевидное отсутствует.