在某些情况下,我试图计算对1或1+抗生素的耐药情况。下面是我的电子表格的一个示例:

每种药物"1“表示耐药,"0”表示敏感性。
如果我想确定A组中对一种抗生素耐药的细菌的数量,我该怎么做呢?或者如果我想知道A组中有多少细菌对1种或更多抗生素有耐药性?
我已经为这件事挣扎了一段时间了,所以如果有人能为我指明正确的方向,我会很感激的。
理想情况下,我的输出应该如下所示

发布于 2016-10-06 23:16:55
这些是数组公式。您必须使用Ctrl-Shift-Enter输入这些公式,Excel将神奇地插入大括号(您不能自己插入它们)。
对于确切的1阻力,请输入I2,因为我在下面的图中设置了该设置:
=SUM(($B$2:$B$11=$H2)*IF(MMULT($C$2:$E$11, TRANSPOSE(COLUMN($C$1:$E$1)^0))=1, 1, 0)) for typeA.
将公式向下拖动以获得B类型,如我的设置中所示。
=SUM(($B$2:$B$11=$H3)*IF(MMULT($C$2:$E$11, TRANSPOSE(COLUMN($C$1:$E$1)^0))=1, 1, 0))
对于超过一个电阻,在J2中,请使用:
=SUM(($B$2:$B$11=$H2)*IF(MMULT($C$2:$E$11, TRANSPOSE(COLUMN($C$1:$E$1)^0))>1, 1, 0)*(MMULT(IF($C$2:$E$11=9, 0, 1), TRANSPOSE(COLUMN($C$1:$E$1)^0))= COLUMNS($C$1:$E$1)))
再一次,拖拽公式得到typeB.

请注意,只有三个单元格范围/区域需要输入到公式中(尽管在几个点)。
如果为这些区域设置了命名范围,则可以将命名范围放入公式中,并且在数据范围更改大小时不必修改公式范围参数。但这是另一点..。
用于解释的编辑:--如果您计算公式部件,您可能会看到类似于(对于我提供的图像)的=SUM(({TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE})*IF(MMULT({1,0,0;1,9,1;0,1,1;9,1,0;1,0,1;1,1,0;9,1,1;0,1,9;0,1,1;1,1,0},{1;1;1})>1, 1, 0)*(MMULT({1,1,1;1,0,1;1,1,1;0,1,1;1,1,1;1,1,1;0,1,1;1,1,0;1,1,1;1,1,1},{1;1;1})= 3))
如果乘以1或0,则为True或false。
“^0”的作用是将结果数组中的每个非零数转换为“1”。这使得矩阵乘法可以在数据集上进行,从而产生列向量。
TRANSPOSE({3,4,5}^0)变成:TRANSPOSE({1,1,1}),然后变成:{1;1;1}。注意逗号和分号之间的区别--这意味着1x3向量被转换为3x1向量。然后,您可以使用它作为第二个参数,用10x3矩阵进行矩阵乘法(在我们的例子中,就是数据集)。
MMULT的输出是表示某些输出的10x1列向量。
第一个MMULT用于测试任何细菌的行总数是否大于1;第二个MMULT用于查看是否所有细菌的行条目都是<> 9。
同样的事情也是对一个案子做的。MMULT函数一次用于确定细菌的行总数是否正好为1。
发布于 2016-10-06 18:22:22
为“抵抗计数”创建一个新列,并使用=COUNTIF(B2:D2,">=1")作为单元格E2并填充。然后,您可以按类型或阻力计数筛选表。使用SUBTOTAL对筛选过的行进行计数。
发布于 2016-10-06 20:43:28
我会这样做:
1)在表的右侧创建一个额外的列(名为" count "),每一行细菌数为1s。公式是:=COUNTIF(C2:E5, "1")
2)使用嵌套的IF语句在表右侧创建另一列(名为“电阻”)。公式是:=IF(F2=1,"Resistant to 1",IF(F2=0,"Resistant to 0","Resistant to More than 1"))
3)用这些数据创建一个数据透视表。将“电阻”放在“列”字段中,“类型”放在行字段中,“计数和”放在“值”字段中。
这应该能给你你想要的东西。
https://stackoverflow.com/questions/39902900
复制相似问题