2017-01-11 1 views
0

지표를 기준으로 서로 다른 열이 얼마나 겹치는 지 알기 위해 일련의 관측을 수행하겠습니다. &% N overlap matrix in 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