【问题标题】:Several matrix operations in one single cell一个单元格中的多个矩阵运算
【发布时间】:2016-11-22 21:20:02
【问题描述】:

我有这个示例矩阵,其中行表示不同的物种,列表示不同的观察位置。单元格用 1 或 0 填充,具体取决于是否在该特定位置观察到物种(即:在位置 #1 和 #2 观察到物种 B)

        1       2       3
a       1       1       0
b       1       1       0
c       1       0       0
d       0       0       1

我必须计算每个物种的出现次数。一个物种的出现被定义为:“在其中观察到某个物种的其他物种的数量除以其他物种的总数”(即:在位置#1 与物种 B 和 C 一起观察到物种 A 和位置 #2 中的物种 B,因此发生率为 3 个物种中的 2 个({B,C,D} 中的 B 和 C 或 0.667)。 出现 1 表示物种 X 与所有其他物种一起被发现,出现 0 意味着物种 X 总是单独被发现。

结果会是这样的:

物种发生 0.67 b 0.67 c 0.67 d 0.00

我能够生成一个辅助矩阵,其中包含与物种一样多的行和列,并使用 SUMPRODUCT 检查每个交互是否发生。然后对所有列值求和,除以得到出现次数。

我的问题是:“可以在一个单元格中执行这样的公式吗?

非常感谢。

【问题讨论】:

    标签: excel array-formulas


    【解决方案1】:

    假设该表在A1:D5,在E2数组公式**

    =MAX(0,SUM(N(MMULT(B$2:D$5,TRANSPOSE(B2:D2))>0))-1)/(COUNTA(A$2:A$5)-1)

    根据需要复制下来。

    问候

    **数组公式的输入方式与“标准”公式不同。不是只按 ENTER,而是先按住 CTRL 和 SHIFT,然后再按 ENTER。如果操作正确,您会注意到 Excel 在公式周围放置了大括号 {}(尽管不要尝试自己手动插入)。

    【讨论】:

    • 优秀 - 我最终会到达那里,但不是那么简洁
    • 太棒了!正是我需要的。
    • @TomSharpe 谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 2015-07-20
    • 2018-07-27
    • 2014-07-01
    • 1970-01-01
    • 2014-04-05
    • 2019-02-24
    • 1970-01-01
    相关资源
    最近更新 更多