我有一个包含180列和200,000行的庞大数据库。为了更好地说明,我有一个180 x 200000的矩阵。每个矩阵是一个数字的数字。我需要找到他们的共现计数。 例如,我有5列的数据,其值为1,2,3,4,5。我需要找到次数(1,2),(1,3),(1,4),(1,5),(2,3),(2,4),(2,5), (3,4),(3,5),(4,5)已在数据库中发生。你能告诉我一个解决这个问题的方法吗? 我接触过R和python。所以任何使用它们的建议都会有所帮助。 这也可以使用AWS map reducer完成吗?这些方面的任何帮助或指示也会有所帮助。
答案 0 :(得分:2)
对的计数只是单身人数的产物。
使用R:
在我一岁的MacBook Pro上花费5秒钟生成一个200000行和180列的矩阵,其元素为数字:
mat< - matrix(样本(0:9,180 * 200000,repl = T),nc = 180)
现在每行的表格数字:
tab< - sapply(0:9,function(x)rowSums(mat == x))
现在找到每行中的对数:
cp< - combn(0:9,2,function(x)tab [,1 + x [1]] * tab [,1 + x [2]])
汇总行:
colSums(CP)
验证第一行的结果:
tab2< - table(matrix(mat [1,],nr = 180,nc = 180),matrix(mat [1,],nr = 180,nc = 180,byrow = TRUE))
all(tab2 [lower.tri(tab2)] == cp [1,])