Допустим, у меня есть таблица с данными, которая выглядит следующим образом:
d user val
1 1 .94
1 2 -.88
1 3 .24
1 4 .74
2 1 .35
2 2 .68
2 3 -.98
2 4 .62
3 1 -.81
3 2 .97
3 3 .29
3 4 ___ (this row doesn't exist in the database)
4 1 .76
4 2 .38
4 3 -.98
4 4 .15
5 1 .69
5 2 .27
5 3 -.49
5 4 -.59
Для данного пользователя (скажем, 2) я хотел бы следующий вывод:
user calc
1 -.102
3 .668
4 -.1175
Обобщенный:
user calc
1 ((-.88 - .94) + (.68 - .35) + (.97 - -.81) + (.38 - .76) + (.27 - .69)) / 5
3 ((-.88 - .24) + (.68 - -.98) + (.97 - .29) + (.38 - -.98) + (.27 - -.49)) / 5
4 ((-.88 - .74) + (.68 - .62) + (.38 - .15) + (.27 - -.59)) / 4
Обобщенный далее:
user calc
1 sum of (user2's d value - user1's d value) / count
3 sum of (user2's d value - user3's d value) / count
4 sum of (user2's d value - user4's d value) / count
Чтобы объяснить более подробно, я хотел бы получить вывод, который показывает отношение каждого к данному пользователю (в данном случае пользователь 2).В моем фактическом наборе данных есть сотни несортированных отдельных пользователей и значений d, но я попытался упростить набор данных для этого вопроса.
Кроме того, обратите внимание, что не все пользователи имеют рекламную ценность, поэтому она должна толькофактор соответствия наборов.Посмотрите, как в приведенном выше примере у пользователя 4 нет значения для d = 3, поэтому он пропускается при расчете.