groupsummary

Группирование сводных данных расчетов

Описание

пример

G = groupsummary(T,groupvars) возвращает таблицу, содержащую вычисленные группы и количество элементов в каждой группе для данных в таблице или расписании T. Группа содержит уникальные комбинации сгруппированных переменных в groupvars. Для примера, G = groupsummary(T,'Gender') возвращает количество Male элементы и количество Female элементы переменной Gender.

пример

G = groupsummary(T,groupvars,method) также возвращает расчеты, заданную в method. Для примера, G = groupsummary(T,'Gender','median') возвращает медиану всех негруппированных переменных в T для обоих полов, в дополнение к количеству элементов в каждой группе.

пример

G = groupsummary(T,groupvars,method,datavars) задает переменные для применения расчетов.

G = groupsummary(T,groupvars,groupbins) задает, как складывать данные в groupvars. Для примера, G = groupsummary(T,'SaleDate','year') приводит счетчики группы для всех продаж в T в течение каждого года в соответствии с сгруппированной переменной SaleDate.

G = groupsummary(T,groupvars,groupbins,method) помещает данные в соответствии с groupbins для расчетов, заданной в method.

пример

G = groupsummary(T,groupvars,groupbins,method,datavars) помещает данные в соответствии с groupbins и задает переменные для применения расчетов.

пример

G = groupsummary(___,Name,Value) задает дополнительные свойства группирования, используя одну или несколько пары "имя-значение" для любого из предыдущих синтаксисов. Для примера, G = groupsummary(T,'Category1','IncludeMissingGroups',false) исключает группу, созданную из отсутствующих categorical данные, обозначенные <undefined>.

B = groupsummary(A,groupvars,method) возвращает расчеты согласно уникальным комбинациям сгруппированных векторов в groupvars когда A является вектором или матрицей. groupvars может быть вектором-столбцом, матрицей или массивом ячеек векторов-столбцов.

пример

B = groupsummary(A,groupvars,groupbins,method) помещает данные в соответствии с groupbins.

пример

B = groupsummary(___,Name,Value) задает дополнительные свойства группирования, используя одну или несколько пары "имя-значение" для любого из предыдущих синтаксисов массива.

[B,BG] = groupsummary(A,___) также возвращает группы для каждого группирующего вектора.

пример

[B,BG,BC] = groupsummary(A,___) также возвращает счетчики групп для каждой группы.

Примеры

свернуть все

Вычислите сводную статистику по табличным переменным.

Создайте таблицу T который содержит информацию о пяти индивидуумах.

Gender = ["male";"female";"female";"male";"male"];
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
T = table(Gender,Age,Height,Weight)
T=5×4 table
     Gender     Age    Height    Weight
    ________    ___    ______    ______

    "male"      38       71       176  
    "female"    43       69       163  
    "female"    38       64       131  
    "male"      40       67       133  
    "male"      49       64       119  

Вычислите количество мужчин и женщин путем определения Gender как сгруппированная переменная.

G = groupsummary(T,"Gender")
G=2×2 table
     Gender     GroupCount
    ________    __________

    "female"        2     
    "male"          3     

Вычислите средний возраст, рост и вес самок и самцов отдельно.

G = groupsummary(T,"Gender","mean")
G=2×5 table
     Gender     GroupCount    mean_Age    mean_Height    mean_Weight
    ________    __________    ________    ___________    ___________

    "female"        2            40.5         66.5            147   
    "male"          3          42.333       67.333         142.67   

Все еще группировка по полу, вычислите только медианную высоту.

G = groupsummary(T,"Gender","median","Height")
G=2×3 table
     Gender     GroupCount    median_Height
    ________    __________    _____________

    "female"        2             66.5     
    "male"          3               67     

Сгруппировать данные таблицы с помощью двух сгруппированных переменных.

Создайте таблицу T который содержит информацию о пяти индивидуумах.

Gender = ["male";"female";"male";"female";"male"];
Smoker = logical([1;0;1;0;1]);
Weight = [176;163;131;133;119];
T = table(Gender,Smoker,Weight)
T=5×3 table
     Gender     Smoker    Weight
    ________    ______    ______

    "male"      true       176  
    "female"    false      163  
    "male"      true       131  
    "female"    false      133  
    "male"      true       119  

Вычислите средний вес, сгруппированный по полу и статусу курения. По умолчанию две комбинации пола и статуса курения не представлены в выходе, потому что они являются пустыми группами.

G = groupsummary(T,{'Gender','Smoker'},'mean','Weight')
G=2×4 table
     Gender     Smoker    GroupCount    mean_Weight
    ________    ______    __________    ___________

    "female"    false         2             148    
    "male"      true          3             142    

Установите 'IncludeEmptyGroups' значение параметров в true в порядок для просмотра всех комбинаций групп, включая пустые таковые.

G = groupsummary(T,{'Gender','Smoker'},'mean','Weight','IncludeEmptyGroups',true)
G=4×4 table
     Gender     Smoker    GroupCount    mean_Weight
    ________    ______    __________    ___________

    "female"    false         2             148    
    "female"    true          0             NaN    
    "male"      false         0             NaN    
    "male"      true          3             142    

Сгруппировать данные в соответствии с указанными интервалами.

Составьте расписание, содержащее информацию о продажах для дней в течение одного месяца.

TimeStamps = datetime([2017 3 4; 2017 3 2; 2017 3 15; 2017 3 10;...
                       2017 3 14; 2017 3 31; 2017 3 25;...
                       2017 3 29; 2017 3 21; 2017 3 18]);
Profit = [2032 3071 1185 2587 1998 2899 3112 909 2619 3085]';
TotalItemsSold = [14 13 8 5 10 16 8 6 7 11]';
TT = timetable(TimeStamps,Profit,TotalItemsSold)
TT=10×2 timetable
    TimeStamps     Profit    TotalItemsSold
    ___________    ______    ______________

    04-Mar-2017     2032           14      
    02-Mar-2017     3071           13      
    15-Mar-2017     1185            8      
    10-Mar-2017     2587            5      
    14-Mar-2017     1998           10      
    31-Mar-2017     2899           16      
    25-Mar-2017     3112            8      
    29-Mar-2017      909            6      
    21-Mar-2017     2619            7      
    18-Mar-2017     3085           11      

Вычислите среднюю прибыль, сгруппированную по общему количеству проданных элементов, разбивая группы на интервалы номеров элементов.

format shorte
G = groupsummary(TT,'TotalItemsSold',[0 4 8 12 16],'mean','Profit')
G=3×3 table
    disc_TotalItemsSold    GroupCount    mean_Profit
    ___________________    __________    ___________

         [4, 8)            3.0000e+00    2.0383e+03 
         [8, 12)           4.0000e+00    2.3450e+03 
         [12, 16]          3.0000e+00    2.6673e+03 

Вычислите среднюю прибыль, сгруппированную по дням недели.

G = groupsummary(TT,'TimeStamps','dayname','mean','Profit')
G=5×3 table
    dayname_TimeStamps    GroupCount    mean_Profit
    __________________    __________    ___________

        Tuesday           2.0000e+00    2.3085e+03 
        Wednesday         2.0000e+00    1.0470e+03 
        Thursday          1.0000e+00    3.0710e+03 
        Friday            2.0000e+00    2.7430e+03 
        Saturday          3.0000e+00    2.7430e+03 

Создайте вектор дат и вектор соответствующих значений прибыли.

timeStamps = datetime([2017 3 4; 2017 3 2; 2017 3 15; 2017 3 10; ...
                       2017 3 14; 2017 3 31; 2017 3 25; ...
                       2017 3 29; 2017 3 21; 2017 3 18]);
profit = [2032 3071 1185 2587 1998 2899 3112 909 2619 3085]';

Рассчитать среднюю прибыль по дням недели. Отображение средств, имен групп и количества представителей в каждой группе.

format shorte
[meanDailyProfit,dayOfWeek,dailyCounts] = groupsummary(profit,timeStamps,'dayname','mean')
meanDailyProfit = 5×1

   2.3085e+03
   1.0470e+03
   3.0710e+03
   2.7430e+03
   2.7430e+03

dayOfWeek = 5x1 categorical
     Tuesday 
     Wednesday 
     Thursday 
     Friday 
     Saturday 

dailyCounts = 5×1

     2
     2
     1
     2
     3

Вычислите средние веса для четырех групп на основе их пола и статуса курильщика.

Сохраните информацию о пациенте как три вектора разных типов.

Gender = ["male";"female";"male";"female";"male"];
Smoker = logical([1;0;1;0;1]);
Weight = [176;163;131;133;119];

Группировка по полу и статусу курильщика, вычислите средние веса. B содержит среднее значение для каждой группы (NaN для пустых групп). BG - массив ячеек, содержащий два вектора, которые описывают группы, когда вы смотрите на их элементы rowwish. Например, первая строка BG{1} говорит, что пациенты в первой группе женские, и первая строка BG{2} говорит, что они некурящие. Наконец, BC содержит количество представителей в каждой группе для соответствующих групп в BG.

[B,BG,BC] = groupsummary(Weight,{Gender,Smoker},'mean','IncludeEmptyGroups',true);
B
B = 4×1

   148
   NaN
   NaN
   142

BG{1}
ans = 4x1 string
    "female"
    "female"
    "male"
    "male"

BG{2}
ans = 4x1 logical array

   0
   1
   0
   1

BC
BC = 4×1

     2
     0
     0
     3

Загрузите данные, содержащие информацию о пациенте, и составьте таблицу, описывающую пол, сестрическое и диастолическое артериальное давление, рост и вес каждого пациента.

load patients
T = table(Gender,Systolic,Diastolic,Height,Weight)
T=100×5 table
      Gender      Systolic    Diastolic    Height    Weight
    __________    ________    _________    ______    ______

    {'Male'  }      124          93          71       176  
    {'Male'  }      109          77          69       163  
    {'Female'}      125          83          64       131  
    {'Female'}      117          75          67       133  
    {'Female'}      122          80          64       119  
    {'Female'}      121          70          68       142  
    {'Female'}      130          88          64       142  
    {'Male'  }      115          82          68       180  
    {'Male'  }      115          78          68       183  
    {'Female'}      118          86          66       132  
    {'Female'}      114          77          68       128  
    {'Female'}      115          68          66       137  
    {'Male'  }      127          74          71       174  
    {'Male'  }      130          95          72       202  
    {'Female'}      114          79          65       129  
    {'Male'  }      130          92          71       181  
      ⋮

Группировка по полу, вычислите корреляцию между ростом и весом пациента и корреляцией между дистолическим и диастолическим артериальным давлением. Используйте xcov функция как метод для вычисления корреляции. Первые два входных параметров для xcov описать данные для корреляции, третий аргумент описывает размер задержки, а четвертый аргумент описывает тип нормализации. Для каждого расчета x и y аргументы переданы в xcov заданы попарно по переменной из двух элементов камеры ["Height","Systolic"] и ["Weight","Diastolic"].

G = groupsummary(T,"Gender",@(x,y)xcov(x,y,0,'coeff'),{["Height","Systolic"],["Weight","Diastolic"]})
G=2×4 table
      Gender      GroupCount    fun1_Height_Weight    fun1_Systolic_Diastolic
    __________    __________    __________________    _______________________

    {'Female'}        53             0.071278                 0.48731        
    {'Male'  }        47             0.047571                 0.50254        

Кроме того, если ваши данные находятся в векторной или матричной форме вместо в таблице, можно предоставить данные, которые будут коррелировать в качестве первого входного параметра groupsummary.

[G,GR,GC] = groupsummary({[Height,Systolic],[Weight,Diastolic]},Gender,@(x,y)xcov(x,y,0,'coeff'))
G = 2×2

    0.0713    0.4873
    0.0476    0.5025

GR = 2x1 cell
    {'Female'}
    {'Male'  }

GC = 2×1

    53
    47

Входные параметры

свернуть все

Входные данные, заданные как таблица или расписание.

Входной массив, заданный как вектор, матрица или массив ячеек векторов или матриц.

Когда вы задаете указатель на функцию для method который принимает более одного входные параметры, входных данных A должен быть массивом ячеек из векторов или матриц. При каждом вызове функции по группам входными параметрами являются соответствующие столбцы каждого элемента массива ячеек. Для примера:

  • groupsummary({x1, y1},groupvars,@(x,y) myFun(x,y)) вычисляет myFun(x1,y1) для каждой группы.

  • groupsummary({[x1 x2], [y1 y2]},groupvars,@(x,y) myFun(x,y)) сначала вычисляет myFun(x1,y1) для каждой группы и затем вычисляет myFun(x2,y2) для каждой группы.

Сгруппированные переменные или векторов, заданная как одна из следующих опций:

  • Для входа массива, groupvars может быть либо вектором-столбцом с одинаковым числом строк, как A или группу векторов-столбцов, расположенных в матрице или массиве ячеек.

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

    ОпцияОписаниеПримеры
    Скалярное имя переменной

    Вектор символов или скалярная строка, задающая одно имя табличной переменной.

    'Var1'

    "Var1"

    Вектор имен переменных

    Массив ячеек из векторов символов или строковых массивов, где каждый элемент является именем табличной переменной.

    {'Var1' 'Var2'}

    ["Var1" "Var2"]

    Скаляр или вектор переменных индексов

    Скаляр или вектор табличных переменных.

    1

    [1 3 5]

    Логический скаляр или вектор

    Логический вектор, элементы которого каждый соответствуют табличной переменной, где true включает соответствующую переменную и false исключает его.

    [true false true]

    Указатель на функцию

    Указатель на функцию, который принимает табличную переменную как вход и возвращает логический скаляр.

    @isnumeric

    vartype индекс

    Индекс таблицы, сгенерированный vartype функция.

    vartype('numeric')

Пример: groupsummary(T,"Var3")

Метод расчета, заданный как один из следующих:

  • 'sum' - сумма

  • 'mean' - среднее

  • 'median' - медиана

  • 'mode' - режим

  • 'var' - отклонение

  • 'std' - стандартное отклонение

  • 'min' - минимум

  • 'max' - максимум

  • 'range' - максимум минус минимум

  • 'nummissing' - количество отсутствующих элементов

  • 'nnz' - число ненулевых и ненулевых NaN элементы

  • 'all' - все расчеты, перечисленные ранее

Можно также задать method как указатель на функцию, который возвращает по одной сущности на группу, чья первая размерность имеет длину 1. Для входных данных таблицы функция действует с каждой табличной переменной отдельно.

Когда входные данные являются таблицей T и вы задаете указатель на функцию для method который принимает более одного входные параметры, необходимо задать datavars. The datavars аргумент должен быть массивом ячеек, элементы которого указывают табличные переменные, используемые для каждого входа метода. В каждом вызове функции по группам входными параметрами являются соответствующие табличные переменные элементов массива ячеек. Для примера:

  • groupsummary(T,groupvars,@(x,y) myFun(x,y),{"x1","y1"}) вычисляет myFun(T.x1,T.y1) для каждой группы.

  • groupsummary(T,groupvars,@(x,y) myFun(x,y),{["x1" "x2"],["y1" "y2"]}) сначала вычисляет myfun(T.x1,T.y1) для каждой группы и затем вычисляет myfun(T.x2,T.y2) для каждой группы.

Когда входные данные в векторной или матричной форме, и вы задаете указатель на функцию для method который принимает более одного входные параметры, входных данных A должен быть массивом ячеек из векторов или матриц. При каждом вызове функции входными параметрами являются соответствующие столбцы каждого элемента массива ячеек. Для примера:

  • groupsummary({x1,y1},groupvars,@(x,y) myFun(x,y)) вычисляет myFun(x1,y1) для каждой группы.

  • groupsummary({[x1 x2],[y1 y2]},groupvars,@(x,y) myFun(x,y)) сначала вычисляет myFun(x1,y1) для каждой группы и затем вычисляет myFun(x2,y2) для каждой группы.

Чтобы задавать несколько расчеты за раз, перечислите опции в массиве ячеек, такие как {'mean','median'} или {myFun1,myFun2}.

NaN значения во входных данных автоматически опускаются при использовании описанных здесь имен методов, за исключением 'nummissing'. Включение NaN значения, рассмотрите использование указателя на функцию для метода, такого как @sum вместо 'sum'.

Типы данных: char | string | cell | function_handle

Табличные переменные для работы, заданные как один из опций в этой таблице. datavars указывает, к каким переменным таблицы входа или timetable применять методы. Другие переменные, не заданные datavars не управляются и не проходят через выход. Когда datavars не задан, groupsummary действует с каждой переменной, не входящей в группу.

ОпцияОписаниеПримеры
Имя переменной

Вектор символов или скалярная строка, задающая имя табличной переменной

'Var1'

"Var1"

Вектор имен переменных

Массив ячеек из векторов символов или строковых массивов, где каждый элемент является именем табличной переменной

{'Var1' 'Var2'}

["Var1" "Var2"]

Скаляр или вектор переменных индексов

Скаляр или вектор табличных переменных

1

[1 3 5]

Логический вектор

Логический вектор, элементы которого каждый соответствуют табличной переменной, где true включает соответствующую переменную и false исключает его

[true false true]

Указатель на функцию

Указатель на функцию, который принимает табличную переменную как вход и возвращает логический скаляр

@isnumeric

vartype индекс

Индекс таблицы, сгенерированный vartype функция

vartype('numeric')

Когда входные данные являются таблицей T и вы задаете указатель на функцию для method который принимает более одного входные параметры, необходимо задать datavars. The datavars аргумент должен быть массивом ячеек, элементы которого являются любым из опций в таблице. Элементы массива ячеек указывают табличные переменные, которые используются для каждого входа в метод. В каждом вызове функции по группам входными параметрами являются соответствующие табличные переменные элементов массива ячеек. Для примера:

  • groupsummary(T,groupvars,@(x,y) myFun(x,y),{"x1", "y1"}) вычисляет myFun(T.x1,T.y1) для каждой группы.

  • groupsummary(T,groupvars,@(x,y) myFun(x,y),{["x1" "x2"],["y1" "y2"]}) сначала вычисляет myfun(T.x1,T.y1) для каждой группы и затем вычисляет myfun(T.x2,T.y2) для каждой группы.

Пример: groupsummary(T,groupvars,method,["Var1" "Var2" "Var4"])

Схема раскладывания, заданная как один из следующих опций:

  • 'none', что указывает на отсутствие раскладывание

  • Список границ интервала, заданный в виде числового вектора или datetime вектор для datetime сгруппированные переменные или векторов

  • Количество интервалов, заданное как целочисленный скаляр

  • Длительность, заданная как скаляр типа duration или calendarDuration ширина интервала (для datetime или duration сгруппированные переменные или векторов)

  • Временной интервал для datetime и duration сгруппированные переменные или векторов, заданная как один из следующих векторов символов:

    ЗначениеОписаниеТип данных
    'second'

    Каждый интервал занимает 1 секунду.

    datetime и duration
    'minute'

    Каждый интервал - 1 минута.

    datetime и duration
    'hour'

    Каждый интервал - 1 час.

    datetime и duration
    'day'

    Каждый интервал занимает 1 календарный день. Это значение учетов летнего времени сдвигов экономии времени.

    datetime и duration
    'week'Каждый интервал занимает 1 календарную неделю.datetime только
    'month'Каждый интервал занимает 1 календарный месяц.datetime только
    'quarter'Каждый интервал составляет 1 календарный квартал.datetime только
    'year'

    Для каждого интервала используется 1 календарный год. Это значение учитывает високосные дни.

    datetime и duration
    'decade'Каждый интервал составляет 1 декаду (10 календарных лет).datetime только
    'century'Каждый интервал составляет 1 век (100 календарных лет).datetime только
    'secondofminute'

    Интервалы указаны в секундах от 0 до 59.

    datetime только
    'minuteofhour'

    Интервалы указаны в минутах от 0 до 59.

    datetime только
    'hourofday'

    Интервалы - это часы от 0 до 23.

    datetime только
    'dayofweek'

    Интервалы - это дни от 1 до 7. Первый день недели - воскресенье.

    datetime только
    'dayname'Интервалы - это имена полных дней, такие как 'Sunday'.datetime только
    'dayofmonth'Интервалы - это дни от 1 до 31.datetime только
    'dayofyear'Интервалы - это дни от 1 до 366.datetime только
    'weekofmonth'Интервалов - это недели от 1 до 6.datetime только
    'weekofyear'Интервалов от 1 до 54 недель.datetime только
    'monthname'Интервалы - это полные имена месяцев, такие как 'January'.datetime только
    'monthofyear'

    Интервалы от 1 до 12 месяцев.

    datetime только
    'quarterofyear'Интервалы представляют собой четверти от 1 до 4.datetime только

  • Массив ячеек раскладывания перечисляющий правила для каждой сгруппированной переменной или вектора

Когда задано несколько сгруппированных переменных, можно задать одно правило раскладывания, которое применяется ко всем сгруппированным переменным, или массив ячеек, содержащий метод раскладывания для каждой сгруппированной переменной, такой как {'none',[0 2 4 Inf]}.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: G = groupsummary(T,groupvars,groupbins,'IncludedEdge','right')

Включённая граница интервала, заданный как 'left' или 'right', указание, какой конец интервала интервала содержащий.

Эта пара "имя-значение" может быть задана только тогда, когда groupbins задается, и значение применяется ко всем схемам раскладывания для всех сгруппированных переменных или векторов.

Индикатор отсутствующих групп, заданный как true или false. Когда значение параметров true, groupsummary отображает группы, состоящие из отсутствующих значений, таких как NaN. Когда значение параметров false, groupsummary не отображает отсутствующие группы.

Типы данных: logical

Индикатор пустых групп, заданный как true или false. Когда значение параметров false, groupsummary не отображает группы с нулевыми элементами. Когда значение параметров true, groupsummary отображает пустые группы.

Типы данных: logical

Выходные аргументы

свернуть все

Выходная таблица, возвращенная как таблица, содержащая указанные расчеты для каждой группы.

Выходной массив, возвращенный как вектор или матрица, содержащая расчеты. Когда вы задаете несколько методов, groupsummary горизонтально конкатенирует расчеты в том порядке, в котором они были перечислены.

Группы для входных данных массива, возвращенные как вектор-столбец или массив ячеек векторов-столбцов каждый, соответствующий вектор группировки.

Когда вы предоставляете более одного вектора группировки, BG - массив ячеек, содержащий векторы-столбцы равной длины. Информацию о группе можно найти, посмотрев на элементы rowwish во всех векторах в BG. Каждая группа преобразуется в соответствующую строку выходного массива B.

Количество групп для входных данных массива, возвращаемое как вектор-столбец, содержащее количество элементов в каждой группе. Длина BC совпадает с длиной групповых векторов-столбцов, возвращаемой в BG.

Совет

  • При совершении многих вызовов в groupsummary, рассмотрите преобразование сгруппированных переменных в тип categorical или logical по возможности для улучшенной производительности. Например, если у вас есть сгруппированная переменная типа char (такие как Gender с элементами 'Male' и 'Female'), можно преобразовать его в категориальное значение с помощью команды categorical(Gender).

Расширенные возможности

Введенный в R2018a