在 R 中创建 % 重叠矩阵
Create % 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%。
您可以使用 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
我想进行一组观察并根据指标找出不同列的重叠程度。我有以下数据:
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%。
您可以使用 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