我的数据框如下:
group_id user_id
1000 26
1236 29
1236 46
3767 26
3767 46
5614 29
5614 45
5614 46
我需要输出如下:
User-1 User-2 #of-common-groups
26 26 2
26 46 1
29 29 2
29 45 1
29 46 2
45 29 1
45 45 1
45 46 1
46 26 1
46 29 2
46 45 1
46 46 3
有没有一种快速的方法可以实现这一目标?我实际上有 137 个不同的组和大约 81000 个用户。
用户26属于2个组,并且他还与用户46共享同一组3767。因此
26 26 2
26 46 1
46 26 1
46 46 3 (user 46 belongs to 3 groups) etc
这是使用的尝试Matrix
包 - 只是复制 @nograpes 的答案here https://stackoverflow.com/a/26247144/559784:
require(Matrix)
sm = sparseMatrix(dat$group_id, dat$user_id, x = TRUE)
cp = t(sm) %*% sm
as.data.frame(summary(cp))
# i j x
# 1 26 26 2
# 2 46 26 1
# 3 29 29 2
# 4 45 29 1
# 5 46 29 2
# 6 29 45 1
# 7 45 45 1
# 8 46 45 1
# 9 26 46 1
# 10 29 46 2
# 11 45 46 1
# 12 46 46 3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)