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 массив ячеек, содержащий два вектора, которые описывают группы, когда вы смотрите на их построчные элементы. Например, первая строка 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' — количество ненулевых и non-NaN элементы

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

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

Когда входные данные являются таблицей T и вы задаете указатель на функцию для method это берет больше чем один входной параметр, необходимо задать datavars. 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 указывает который переменные входной таблицы или расписания, чтобы применить методы к. Другие переменные, не заданные 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. 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"])

Схема Binning в виде одной из следующих опций:

  • '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 не отображает недостающие группы.

Типы данных: логический

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

Типы данных: логический

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

свернуть все

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

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

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

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

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

Советы

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

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

Введенный в R2018a
Для просмотра документации необходимо авторизоваться на сайте