Найти похожих пользователей

0

У меня есть таблица с тысячами строк.

Пример данных:

user_id ZIP City    email
105 100051  Lond.   [email protected]
382 251574          [email protected]
225 0100051 London  [email protected]

Мне нужно сравнить каждого пользователя с другими, чтобы узнать, какие из них похожи.

В приведенном примере пользователь 105 и 225 практически одинаков, поэтому ожидаемым результатом будет столбец нового идентификатора, который соответствует двум из них, например:

user_id ZIP City    email                   new_id
105 100051  Lond.   [email protected]      105
382 251574          [email protected]   382
225 0100051 London  [email protected]  105

Как бы я сравнивал каждое поле с другими и знал, как их сравнивать, например, кластеризация?

  • 1
    ТАК не сайт домашней работы .. извините. Приложите усилия (разместив то, что вы пытались решить, ответив) и вы будете вознаграждены ;-)
  • 0
    Вы можете использовать функцию agrep чтобы найти все совпадения: например, sapply(dat$email,agrep,dat$email,value=T) даст вам совпадения для электронной почты
Показать ещё 1 комментарий
Теги:
match

1 ответ

1
Лучший ответ

Ваши электронные письма:

email<-c("[email protected]","[email protected]","[email protected]")

Расстояние между электронными письмами:

dist<-stringdistmatrix(email,email,method="jw")
dist[dist==0]<-1

Минимальное расстояние между электронными письмами:

cbind(email,email_near=email[apply(dist, 1, which.min)],dist=apply(dist, 1, FUN=min))

     email                    email_near               dist               
[1,] "[email protected]"     "[email protected]" "0.208754208754209"
[2,] "[email protected]"  "[email protected]"     "0.281746031746032"
[3,] "[email protected]" "[email protected]"     "0.208754208754209"

После этого я предлагаю использовать порог на dist, чтобы идентифицировать ближайшие электронные письма, а затем вычислить new_ID.

  • 0
    [email protected] и [email protected] будут иметь большое расстояние, но, очевидно, будут похожи. Возможно разделить на знак @ и сравнить детали самостоятельно.
  • 0
    Это хорошая идея @thc!
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню