抱歉,如果这是一个愚蠢的问题,我觉得如果我知道如何正确表达它,我就可以很快得到答案!
简而言之:我有大量来自多个不同来源的样本。样本的具体来源并不重要,重要的是知道哪些样本来自同一来源。
所以,我现在拥有的是:
Sample source
S1 A
S2 B
S3 B
S4 A
S5 A
我需要的是..
S1 S2 S3 S4 S5
S1 1 0 0 1 1
S2 0 1 1 0 0
S3 0 1 1 0 0
S4 1 0 0 1 1
S5 1 0 0 1 1
任何帮助将不胜感激...
最佳答案
您可以尝试 tcrossprod
+ xtabs
(或 table
),如下所示
> tcrossprod(xtabs(~., df))
Sample
Sample S1 S2 S3 S4 S5
S1 1 0 0 1 1
S2 0 1 1 0 0
S3 0 1 1 0 0
S4 1 0 0 1 1
S5 1 0 0 1 1
或者(感谢@user12728748的评论)
> tcrossprod(table(df))
Sample
Sample S1 S2 S3 S4 S5
S1 1 0 0 1 1
S2 0 1 1 0 0
S3 0 1 1 0 0
S4 1 0 0 1 1
S5 1 0 0 1 1
数据
df <- data.frame(Sample = c("S1", "S2", "S3", "S4", "S5"), source = c("A", "B", "B", "A", "A"))
关于r - 如何在 R 中创建精确匹配的二进制矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67436226/