我在 R 中有两张表(女性和男性),其中包含有无数据。我想在它们之间进行成对比较(逐行),以找到每对之间不共享的细胞数(即细胞的总和在女性身上等于 1,但在男性身上不等于 1,反之亦然) .
我知道叉积 (%*%) 与我需要的相反。它创建了一个新矩阵,其中包含男性和女性对之间共享单元格的总和(即,两个单元格的总和都等于 1)。
这是一个示例数据集:
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")
所以,如果我做叉积
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
但我需要这个(只显示第一行)
male_1 male_2 male_3 male_4 male_5
female_1 1 1 3 2 3
.
.
实际上,我的数据集不是对称的(我有 47 位女性和 32 位男性)。
谢谢你的帮助!!!