r - 如何在 R 中创建精确匹配的二进制矩阵

标签 r matrix

抱歉,如果这是一个愚蠢的问题,我觉得如果我知道如何正确表达它,我就可以很快得到答案!

简而言之:我有大量来自多个不同来源的样本。样本的具体来源并不重要,重要的是知道哪些样本来自同一来源。

所以,我现在拥有的是:

  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/

相关文章:

python - 将 Matlab 矩阵串联转换为 Python

c++ - 如何将 block 压缩行转换为密集矩阵?

r - 初始稀疏矩阵不会将新的零值变成稀疏矩阵

创建矩阵时的 Python 错误

html - 如何将 R 数据框转换为简单、无样式的 html 表格?

r - 获取通过 R 中管道传递的数据帧的名称

r - 将几行粘贴到由 R 中的 ";"分隔的 1 行中

r - 如何将大多数因素的数据框转换为数值矩阵;不公开不起作用

c++ - 矩阵中的正行

r - 在 R 中,如何逐行读取 CSV 文件并将内容识别为正确的数据类型?