Условная медиана в MS Excel
-
09-09-2019 - |
Вопрос
Я пытаюсь вычислить условную медиану диаграммы, которая выглядит следующим образом:
A | B
-------
x | 1
x | 1
x | 3
x |
y | 4
z | 5
Я использую MS Excel 2007.Мне известен оператор AVERAGEIF(), но для Median нет эквивалента.Основная хитрость в том, что есть строки без данных — например, 4-я «а» выше.В данном случае я вообще не хочу, чтобы эта строка учитывалась в расчетах.
Поиск в Google подсказал следующее, но Excel не принимает формат формулы (может быть, потому, что сейчас 2007 год?)
=MEDIAN(IF((A:A="x")*(A:A<>"")), B:B)
Excel выдает ошибку, сообщающую, что с моей формулой что-то не так (что-то связано с * в условии). Я также пробовал следующее, но в расчетах пустые ячейки считаются как 0:
=MEDIAN(IF(A:A = "x", B:B, "")
Я знаю, что эти формулы возвращают «массивы» Excel, а это означает, что нужно ввести «Ctrl-shift-enter», чтобы заставить его работать правильно.
Как я могу выполнить условную оценку и не учитывать пустые ячейки?
Решение
Вложенные операторы if.
=MEDIAN(IF(A:A = "x",IF(B:B<>"",B:B, ""),"")
Объяснять особо нечего — он проверяет, является ли A x.Если да, он проверяет, не является ли B пустым.Все, что соответствует обоим условиям, рассчитывается как часть медианы.
Учитывая следующий набор данных:
A | B
------
x |
x |
x | 2
x | 3
x | 4
x | 5
Приведенная выше формула возвращает 3,5, чего, я полагаю, вы и хотели.
Другие советы
Используйте формулу Googled, но вместо того, чтобы нажимать Входить после того, как вы введете его в строку формул, нажмите Ctrl+Сдвиг+Входить одновременно (вместо Входить).При этом формула будет заключена в скобки и будет рассматривать ее как массив.
Будьте осторожны: если вы отредактируете его, вы не сможете нажать Входить еще раз, иначе формула будет недействительна.При редактировании вы должны сделать то же самое после завершения (Ctrl+Сдвиг+Входить).
Существует другой способ, не использующий формулу массива, требующую операции CtrlShiftEnter.Он использует функцию Aggregate(), предлагаемую в Excel 2010, 2011 и более поздних версиях.Этот метод также работает для минимума, максимума и различных процентилей.Aggregate() позволяет игнорировать ошибки, поэтому хитрость заключается в том, чтобы все значения, которые не являются обязательными, вызывали ошибки.Самый простой способ выполнить поставленную выше задачу:
=Агрегат(16,6,(B:B)/((A:A = "x")*(B:B<>"")),0.5)
Первый и последний параметры задают сцене процентиль 50%, что является медианой, второй говорит игнорировать все ошибки (включая DIV#0), а третий говорит, что нужно выбрать данные столбца B и разделить их на число, которое один для всех непустых значений, имеющих x в столбце A и ноль в противном случае.Нули создают исключение деления на ноль и будут игнорироваться, поскольку a/1=a и a/0=Div#0
Этот метод работает для квартилей (с соответствующим значением p), конечно, для всех остальных процентилей, а также для максимума и минимума с использованием большой или маленькой функции с соответствующими аргументами.
Это конструкция, похожая на приемы с Sumproduct(), которые так популярны, но которые нельзя использовать для каких-либо квантилей или максимальных и минимальных значений, поскольку они создают нули, которые для этих функций выглядят как числа.
Боб Джордан
Возможно, чтобы обобщить это немного больше, вместо этого...
{=MEDIAN(IF(A:A="x",IF(B:B<>"",B:B)))}
...вы можете использовать следующее:
{=QUARTILE.EXC(IF(A:A="x",IF(B:B<>"",B:B)),2)}
Обратите внимание, что фигурные скобки относятся к формуле массива;вам не следует расставлять скобки в формуле, а следует нажать CTRL+SHIFT+ENTER (или CMD+SHIFT+ENTER в macOS) при вводе формулы.
Тогда вы могли бы легко получить первый и третий квартиль, изменив последнее число с 2 к 1 или 3 соответственно.QUARTILE.EXC — это большинство коммерческих статистических программ (например,Минитаб) пользуйтесь кстати.«Обычная» функция — КВАРТИЛЬ.ВКЛ, а в более старых версиях Excel — просто КВАРТИЛЬ.