Одна идея состоит в том, чтобы использовать расстояния Левенштейна для объединения слов, которые у вас есть.Вам нужно будет предоставить несколько кластеров.Когда у вас есть эти кластеры, просто добавьте номер каждого из них в качестве тега категории к вашей таблице.Проверьте этот ответ, который входит в детали кластеризации расстояния Левенштейна. Кластеризация текста с расстояниями Левенштейна
edit
Мне кажется, я совершенно неправильно понял ваш вопрос ... попробуйте это
df=data.frame("Model"=c("Apple-1","New Apple","Organe","Orange2019","Cat"),
"Price"=c(10,11,13,15,19),stringsAsFactors = FALSE)
tags=data.frame("Model"=c("Apple-1","New Apple","Orange","Cat"),
"Tag"=c("A","A","B","B"),stringsAsFactors = FALSE)
df%>%rowwise()%>%mutate(Tag=if_else(!is.na(tags$Tag[which(!is.na(str_extract(Model,tags$Model)))[1]]),
tags$Tag[which(!is.na(str_extract(Model,tags$Model)))[1]],false="None"))
Model Price Tag
<chr> <dbl> <chr>
1 Apple-1 10 A
2 New Apple 11 A
3 Organe 13 None
4 Orange2019 15 B
5 Cat 19 B
Я действительно изменил Orange
на Organe
, чтобы вы видели, что происходит, если не найдено совпадений (none
возвращается)