2016-11-11 56 views
0

我有兩個表(女性和男性),其中存在缺失數據,我想在它們之間進行配對比較(逐行)以找到每對共享的單元數量(兩個單元格內容均爲1)。按行查找兩個數據集之間的配對匹配(每個單元格)

我在這裏看到類似的問題,但大多數嘗試找到全行內容(而不是細胞)的差異。我相信我需要的是類似於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 
. 
. 
. 
. 

我很感激任何幫助!

回答

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 
+2

此外,還有一個輔助函數'tcrossprod( as.matrix(女性),as.matrix(男性))' – Frank

+0

非常感謝emilliman5和Frank!我收到這條消息「需要數值/複數矩陣/向量參數」。這可能是因爲我正在導入一個帶頭文件的.csv文件? – pbc

+0

我只能說數據需要是數字和矩陣。檢查單個單元格的類(應該是「數字」)和整個對象的類(應該是「矩陣」)。 'read.csv'產生一個data.frame,如果data.frame中的所有數字都是數字,那麼'as.matrix'就足夠了 – emilliman5

相關問題