如何计算每组中有多少细菌对抗生素有抗药性

时间:2016-10-06 18:09:52

标签: excel excel-formula excel-2010

我试图计算在某些条件下对1或1+抗生素产生耐药性的情况。以下是我的电子表格的示例:

enter image description here

对于每种药物,“1”表示抗性,“0”表示灵敏度。

如果我想确定A组中仅对一种抗生素有抗药性的细菌数量,我该如何做?或者,如果我想知道A组中有多少细菌对一种或多种抗生素有抗药性?

我一直在努力争取这个,所以如果有人能指出我正确的方向,我一定会很感激。

理想情况下,我的输出看起来像这样

enter image description here

3 个答案:

答案 0 :(得分:0)

为“阻力计数”创建一个新列,并对单元格E2使用=COUNTIF(B2:D2,">=1")并填写。然后,您可以按类型或阻力计数过滤表格。使用SUBTOTAL计算已过滤的行。

答案 1 :(得分:0)

这就是我要做的事情:

1)在表格右侧创建一个附加列(名为“Count”),每个细菌行中的计数为1。公式为:chart = AmCharts.makeChart( "chartdiv", { // ... omitted ... "dataProvider": [], // ... omitted ... "listeners": [{ "event": "init", "method": function(e) { dataProviderService.newData().then(function(response) { e.chart.dataProvider = response; e.chart.validateData(); }, function(error) { // do something else }); } }] } );

2)使用嵌套的IF语句在表的右侧创建另一列(名为“Resistance”)。公式为:=COUNTIF(C2:E5, "1")

3)使用此数据创建数据透视表。将“Resistance”放在Columns字段中,将“Type”放在Rows字段中,将“Sum of Count”放在Values字段中。

这应该可以满足您的需求。

答案 2 :(得分:0)

这些是数组公式。您必须使用Ctrl-Shift-Enter输入这些公式,Excel将神奇地插入花括号(您不能自己插入)。

对于正好1个阻力,进入I2,因为我在下面的图片中进行了设置:

对于typeA,

=SUM(($B$2:$B$11=$H2)*IF(MMULT($C$2:$E$11, TRANSPOSE(COLUMN($C$1:$E$1)^0))=1, 1, 0))

将公式向下拖动以获取类型B,就像在我的设置中一样。

=SUM(($B$2:$B$11=$H3)*IF(MMULT($C$2:$E$11, TRANSPOSE(COLUMN($C$1:$E$1)^0))=1, 1, 0))

对于1个以上的阻力,在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 ...

enter image description here

请注意,您只需要输入三个单元格范围/区域(尽管在几个点中)。

  1. 类型列的数据范围

  2. 阻力测试结果的数据区

  3. 药物的列标题(应与测试结果区域的宽度相同)。

  4. 如果为这些区域设置命名范围,则可以将命名范围放入公式中,并且在数据范围更改大小时不必修改公式范围参数。但那是另一个观点......

    编辑说明: 如果您评估公式部件,您可能会看到类似的内容(对于我提供的图像)     =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))

    True或false在乘以时计算为1或0。

    ' ^ 0'是将结果数组中的每个非零数字转换为' 1'。这允许在数据范围上进行矩阵乘法以吐出列向量。

    TRANSPOSE({3,4,5}^0)变为:TRANSPOSE({1,1,1}),然后变为:{1;1;1}。注意逗号和分号之间的区别 - 这意味着将1x3向量转换为3x1向量。然后你可以使用它作为矩阵乘法的第二个参数,使用10x3矩阵(在我们的例子中就是数据集)。

    该MMULT的输出是10x1列向量,表示一些输出。

    第一个MMULT用于测试任何细菌的行总数是否> 1.第二个MMULT用于查看是否所有细菌的所有行条目都是<>。 9。

    对于Exactly One的案例也做了类似的事情。 MMULT功能用于确定细菌的行总数是否正好为1.