生成和求和矩阵

Chr*_*sDH 9 r matrix

我对R比较陌生,所以请原谅我认为是一个相对简单的问题.

我有表格中的数据

    1   2   3   4   5
A   0   1   1   0   0
B   1   0   1   0   1
C   0   1   0   1   0
D   1   0   0   0   0
E   0   0   0   0   1
Run Code Online (Sandbox Code Playgroud)

AE是人,1-5是他们是否具有这种品质的二进制文件.我需要制作一个AE矩阵,其中如果A&B的任何质量1-5的总和为2,则单元格A,B = 1.(如果它们共享至少一个质量).简单的5x5将是:

    A   B   C   D   E
A   1               
B   1   1           
C   1   0   1       
D   0   1   0   1   
E   0   1   0   0   1
Run Code Online (Sandbox Code Playgroud)

然后我需要总结整个矩阵.(上面是9).我有成千上万的观察,所以我不能手工完成.我确信有几行简单的代码,我只是没有足够的经验.

谢谢!

编辑:我已经从.csv文件中导入数据,其中列(上面的1-5)作为变量,在实际数据中我有40个变量.AE是对人的唯一ID观察,大约2000年.我还想知道如何首先将其转换为矩阵,以便执行您已经提供的伟大答案.谢谢!

use*_*650 7

您可以在此处使用矩阵乘法

out <- tcrossprod(m)
#   A B C D E
# A 2 1 1 0 0
# B 1 3 0 1 1
# C 1 0 2 0 0
# D 0 1 0 1 0
# E 0 1 0 0 1
Run Code Online (Sandbox Code Playgroud)

然后,如果需要,将对角线设置为1

diag(out) <- 1
Run Code Online (Sandbox Code Playgroud)

正如DavidA在评论中指出的那样tcrossprod基本上是在做m %*% t(m)

他们计算suml的几种方法是一种

sum(out[upper.tri(out, diag=TRUE)] , na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)