当前位置:  开发笔记 > 编程语言 > 正文

在R中创建%重叠矩阵

如何解决《在R中创建%重叠矩阵》经验,为你挑选了1个好方法。

我想采取一系列观察,并根据指标找出不同列的重叠程度.我有以下数据:

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%.



1> Psidom..:

你可以使用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

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有