Лучший способ рассказать историю о ваших данных — это сгруппировать их в соответствующие фрагменты. С помощью этих фрагментов вы можете проверять гипотезы и искать закономерности. Для этого необходимо иметь подход, позволяющий динамически изменять входные переменные и группы. Здесь я покажу вам, как развить этот навык с помощью varfun.

Делайте все, что хотите, с varfun

Эта забавнаяфункция является более мощной, чем любая другая, потому что помимо выполнения пакетных операций она также разбивает вашу таблицу на более управляемые мини-таблицы, а затем группирует данные в этих таблицах. Вы можете сделать все это с помощью скриптов, но я могу сказать по своему опыту: каждое использование varfun экономит вам как минимум десять строк кода, пять фиктивных переменных и несколько логических операторов. Гораздо проще отладить и посмотреть, что происходит.

Мы начнем с некоторых предварительно загруженных данных MATLAB.

load census1994

Давайте проверим переменные в таблице adultdata.

adultdata.Properties.VariableNames % (this is case-sensitive)

Вы должны увидеть такой список:

Давайте попробуем несколько комбинаций.

«Каков средний возраст переписчика каждой расы?»

varfun( @(x) mean(x), adultdata, 'GroupingVariables', {'race'}, 'InputVariables', {'age'}, )

«Каков средний прирост капитала (доход от инвестиций) участника переписи каждой расы?»

varfun( @(x) mean(x), adultdata, 'GroupingVariables', {'race'}, 'InputVariables', {'capital_gain'}, )

«Каков средний прирост капитала (доход от вложений) переписчика разных расово-родовых групп?» — Это могло бы помочь нам ответить, получают ли люди, идентифицирующие себя как одну расу, больше за ту же работу, что и другие люди, которые идентифицировали себя как другую расу.

varfun( @(x) mean(x), adultdata, 'GroupingVariables', {'race','occupation'}, 'InputVariables', {'capital_gain'} )

Выход очень большой, потому что много разных профессий.

Как мы можем использовать эту информацию?

Используйте varfun для вывода таблицы

Как мы видели в случае с rowfun, вы можете указать тип вывода, который вы получите при выполнении varfun. Вот как это будет выглядеть:

myoutput = varfun( @(x) mean(x), adultdata, 'GroupingVariables', {'race','occupation'}, 'InputVariables', {'capital_gain'}, 'OutputFormat', 'table' )

Теперь вы можете запросить сводную таблицу myoutput:.

myoutput( myoutput.occupation=='Adm-clerical', : )
% Remember to use the colon because you want to retrieve all of the columns from your table %

Вы можете дополнительно отсортировать строки таблицы по интересующему столбцу. Мы можем использовать столбец Fun_capital_gain, который представляет собой среднее значение, рассчитанное с помощью varfun!

mysummary = myoutput( myoutput.occupation=='Adm-clerical', : )
sortrows( mysummary, 'Fun_capital_gain' )

Надеюсь, вы нашли это информативным.