2017-01-11 105 views
0

我想獲取一組觀察值&根據指標瞭解不同列的重疊程度。我有以下數據:在R中創建%重疊矩陣

uniquevalue | X | Y | Z | 
Obs 1  | 1 | 0 | 1 | 
Obs 2  | 1 | 1 | 0 | 
Obs 3  | 1 | 0 | 1 | 
Obs 4  | 0 | 1 | 0 | 
Obs 5  | 0 | 0 | 1 | 
Obs 6  | 0 | 1 | 0 | 
Obs 7  | 0 | 0 | 1 | 

我想創建以下數據交疊矩陣:

Label | X | Y | Z | 
X  | 100% | 33% | 50% | 
Y  | 33% | 100% | 0% | 
Z  | 66% | 0% | 100% | 

因此,舉例來說,Z具有總共4個觀測。其4個觀察值中有2個也出現在X上,所以它的重疊百分比是50%。但是,因爲不同的列有不同的觀察數量,所以反過來並不一定是正確的。正如你所看到的,X中3個觀測值中的2個與Z共享,所以它有66%的重疊。

回答

4

您可以使用crossprod

mat <- crossprod(as.matrix(df[2:4]))   # calculate the overlap    
floor(t(mat * 100/diag(mat)))     # calculate the percentage 

# X Y Z 
#X 100 33 50 
#Y 33 100 0 
#Z 66 0 100