r - 如何从二进制表/矩阵创建表达式输入样式格式?

标签 r data-conversion binary-matrix

我的 R 脚本中有一个像这样的二进制表:

>class(forCount)
[1] "table"

>forCount

                          Gene
Filename    CTX-M-27    IMI-1   IMP-39  IMP-4   KPC-2   NDM-1
batch0_01032019_ENT1    0   1   0   0   0   1
batch0_01032019_ENT2    0   0   0   0   1   1
batch0_01032019_ENT3    0   0   0   0   0   1
batch0_01032019_ENT4    0   0   0   0   0   1
batch0_01032019_ENT5    0   0   0   0   0   1
batch0_01032019_ENT6    0   0   0   0   0   1
batch0_01032019_ENT7    0   0   0   0   0   1

如何从中获取以下信息?

NDM-1                  5
NDM-1&IMI-1        1
NDM-1&KPC-2      1

编辑1:以上数据是虚拟数据。根据 @RonakShah 请求添加 dput 信息。这是表中我的数据示例。

> dput(forCount)
structure(c(0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), .Dim = c(6L, 16L), .Dimnames = structure(list(AssemblyFile = c("batch0_01032019_ENT1110", 
"batch0_01032019_ENT1125", "batch0_01032019_ENT1332", "batch0_01032019_ENT1349", 
"batch0_01032019_ENT1449", "batch0_01032019_ENT1607"), CPGene = c("", 
"CTX-M-27", "IMI-1", "IMP-39", "IMP-4", "KPC-2", "NDM-1", "NDM-4", 
"NDM-5", "NDM-7", "NDM-9", "OXA-181", "OXA-23", "OXA-232", "OXA-48", 
"VIM-4")), .Names = c("AssemblyFile", "CPGene")), class = "table")

从上面粘贴的 dput 数据中,我期望得到以下输出,其中包含 6 个样本,其中 5 个样本具有 KPC-2,1 个样本同时具有 KPC-2 和 CTX-M-27。

KPC-2                       5
KPC-2&CTX-M-27     1

最佳答案

您可以将表转换为数据框,并将列名称粘贴到每行中,其中的值为 1,并使用 table 计算它们的出现次数。

df <- as.data.frame.matrix(forCount)
table(apply(df, 1, function(x) paste(names(df)[which(x == 1)], collapse = " & ")))

#CTX-M-27 & KPC-2            KPC-2 
#               1                5 

关于r - 如何从二进制表/矩阵创建表达式输入样式格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61077553/

相关文章:

algorithm - 检查是否可以创建一个二进制矩阵当给出每行和每列的总和时?

c++ - 使用 HUGE 二进制矩阵的最有效方法?

c++ - 两个数组的内存地址重叠

r - 有条件地在 Shiny 中输出不同颜色的文本

r - R 上的 ggplot 问题 : code is correct but I keep receiving the error "Must request at least one color from a hue palette"

r - 如何让 R 从一个大目录下的多个子目录中读取文件?

从 short 转换为 unsigned short 并保留位模式混淆

arm - 将 24 位二进制补码转换为 float_32t

c++ - 将十进制值转换为具有相同可见表示的十六进制值

r - 在 R 中使用 grid.arrange 放置行和列标题