Мне дали указание сгруппировать набор данных по продажам по имени продавца для работы.
Однако, чтобы сократить расходы на ИТ-администрирование, компания не создает отдельный идентификатор или логин для каждого продавца, вместо этого они имеют попросил их ввести его вручную в приложении, которое они используют. Как вы можете себе представить, это приводит к множеству дубликатов из-за ошибок при вводе данных.
Набор данных выглядит примерно так (не их настоящие имена):
reprex_days <- seq(1,22,1)
reprex_sales <- rnorm(22, mean=100, sd=50)
reprex_names<- c("Abby Davies", "Abby Davies", "Abby Davies", "Abby Davis", "Abi Davies", "abby davies", NA,
"simon", "Simon Jenkins", "Simon Jenkins", "Simon Jenkins", "Simon Jenkins", "Simon jenjins",
"Toby Jones", "Toby Jones", "toby jones", "toby jones", "toby jonse", "toby", NA, NA, NA)
reprex <- data.frame(cbind(reprex_days, reprex_sales, reprex_names))
names(reprex) <-c("day_ID", "sales", "salesperson")
reprex$sales <- as.numeric(reprex$sales)
Если я пытаюсь сгруппировать продавцом явно дублируется из-за нескольких версий имени каждого продавца, присутствующего в данных:
reprex_grouped <- reprex %>%
group_by(salesperson) %>%
summarise(total_sales = sum(sales),
mean_sales = mean(sales),
days_active = n())
reprex_grouped
дает:
# A tibble: 13 x 4
salesperson total_sales mean_sales days_active
<fct> <dbl> <dbl> <int>
1 Abby Davis 12 12 1
2 abby davies 14 14 1
3 Abby Davies 31 10.3 3
4 Abi Davies 3 3 1
5 simon 20 20 1
6 Simon Jenkins 5 5 1
7 Simon jenjins 13 13 1
8 Simon Jenkins 46 15.3 3
9 toby 18 18 1
10 toby jones 25 12.5 2
11 Toby Jones 17 8.5 2
12 toby jonse 6 6 1
13 NA 43 10.8 4
Я планирую использовать str_remove () и toLower (), чтобы удалить все лишние пробелы и учесть различия в регистре, и я знаю, что я никогда не смогу успешно идентифицировать сотрудников, когда они только ввели свои имена (иногда есть несколько человек с одним первым имя) или не смогли ничего ввести.
Однако мне интересно, существует ли какой-либо способ автоматического определения того, где имя на один или два символа отличается от другой записи, и изменения его на то, что будет первым в наборе данных ( для этого не имеет значения, правильно ли написано их имя, а не многие ли их продажи относятся к одному человеку)? (например, «Тоби Джонс» c .f. «Тоби Джонс», «Саймон Дженджинс» c .f. «Саймон Дженкинс», «Эбби Дэвис» c .f. «Эбби Дэвис»)
Кто-нибудь знает о расширенном пакете распознавания строковых шаблонов, который может сделать что-то подобное?
Я не могу сделать это вручную, потому что слишком много имен, и потому что компания хочет повторно использовать код для будущие продажи с разными сотрудниками. (Я не могу изменить систему идентификации; у него нет бюджета, чтобы нанимать кого-то для управления разрешениями базы данных, чтобы они не могли реализовать традиционную систему входа в систему.)