2017-01-11 6 views
0

私は一連の観測を取りたいと思っています。&インジケータに基づいてどのくらい重なり合っているかを確認してください。私は、次のデータを持っている:%Rオーバーラップマトリックスを作成する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 
関連する問題