2016-11-22 3 views
1

У меня есть эта матрица образцов, где строки относятся к разным видам, а столбцы относятся к разным наблюдаемым местоположениям. Ячейки заполняются с 1-й или 0 в зависимости, если вид наблюдается в конкретном месте (например: вид B наблюдается в месте № 1 и № 2)Несколько операций с матрицами в одной ячейке

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

Я должен вычислить появление каждого виды. Возникновение вида определяется как: «количество других видов, в которых наблюдается определенный вид, деленный на общее количество других видов» (т. Е. Вид A наблюдался с видами B и C в местоположении № 1 и вид B в местоположении № 2, таким образом, это появление 2 видов из 3 (B и C из {B, C, D} или 0.667). Вхождение 1 означает, что вид X был найден со всеми другими . видов и вхождение 0 означает, что вид Х был всегда находится в покое

в результате будет что-то вроде:

видов встречаемости 0,67 б 0,67 с 0,67 г 0,00

Я могу создать вспомогательную матрицу с таким количеством строк и столбцов, как есть виды, и использовать SUMPRODUCT для каждого взаимодействия, если это произойдет или нет. Затем суммируйте все значения столбца и разделите их и получите.

Мой вопрос: «Можно выполнить такую ​​формулу в одной клетке

Большое спасибо.

ответ

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 помещает фигурные скобки {} вокруг формулы (хотя не пытайтесь вручную вставить их самостоятельно).

+0

Отлично - я бы получил там в конце концов, но не так кратко –

+0

Отлично! Именно то, что мне нужно. – OBT

+0

@OBT Добро пожаловать! –