按行(每个单元格)查找两个数据集之间的成对匹配

时间:2016-11-11 19:40:31

标签: r compare

我有两个表(女性和男性),存在缺席数据,我想在它们之间进行成对比较(逐行)以找到每对共享的单元格数(单元格内容)两者都是=。

我在SO中看到过类似的问题,但大多数人试图找到完整行内容的差异(不是逐个单元格)。我相信我需要的内容与this post相似,但我无法根据具体情况实施。

这是一个例子(虽然我实际上有来自Excel的.csv表)

females <- as.data.frame(matrix(c(0,0,0,1,1,0,1,0,1,0,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1), nrow=5, byrow=T))
males <- as.data.frame(matrix(c(1,0,0,1,1,0,1,0,1,1,1,0,1,0,1,1,1,0,1,1,1,0,1,0,1), nrow=5, byrow=T))
rownames(females) <-c ("female_1","female_2","female_3","female_4","female_5")
rownames(males) <-c ("male_1","male_2","male_3","male_4","male_5")

我的最终目标是在行上创建一个新的数据集,在列上包含男性,每对之间可以共享单元格的数量(我认为一旦我找到其他部分,我可以通过重塑完成此部分)。

           male_1 male_2 male_3 male_4 male_5
female_1      2      2      1      2      1
.
.
.
.

我感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

两个矩阵的交叉产品是你想要的......或者它可能是点积,无论它叫做什么都应该这样做:

as.matrix(females) %*% t(as.matrix(males))



        male_1 male_2 male_3 male_4 male_5
female_1      2      2      1      2      1
female_2      1      2      0      2      0
female_3      2      1      3      2      3
female_4      3      3      2      4      2
female_5      3      2      3      3      3