我想采取一系列观察,并根据指标找出不同列的重叠程度.我有以下数据:
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 |
Run Code Online (Sandbox Code Playgroud)
我想创建以下数据重叠矩阵:
Label | X | Y | Z |
X | 100% | 33% | 50% |
Y | 33% | 100% | 0% |
Z | 66% | 0% | 100% |
Run Code Online (Sandbox Code Playgroud)
因此,例如,Z总共有4个观测值.其4个观察值中的2个也存在于X上,因此其重叠百分比为50%.然而,因为不同的列具有不同的观察数量,所以反过来不一定正确.如您所见,X中的3个观测值中的2个与Z共享,因此其重叠率为66%.
你可以使用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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
538 次 |
最近记录: |