Расчеты сводных данных группы
возвращает таблицу, содержащую вычисленные группы и число элементов в каждой группе для данных в таблице или расписании G
= groupsummary(T
,groupvars
)T
. Группа содержит уникальные комбинации сгруппированных переменных в groupvars
. Например, G = groupsummary(T,'Gender')
возвращает количество Male
элементы и количество Female
элементы в переменной Gender
.
задает дополнительные свойства группировки с помощью одной или нескольких пар "имя-значение" для любого из предыдущих синтаксисов. Например, G
= groupsummary(___,Name,Value
)G = groupsummary(T,'Category1','IncludeMissingGroups',false)
исключает группу, сделанную из пропавших без вести categorical
данные обозначаются <undefined>
.
задает дополнительные свойства группировки с помощью одной или нескольких пар "имя-значение" для любого из предыдущих синтаксисов массивов.B
= groupsummary(___,Name,Value
)
Вычислите итоговую статистику по табличным переменным.
Создайте таблицу 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.3085
1.0470
3.0710
2.7430
2.7430
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
T
— Входные данныеВходные данные в виде таблицы или расписания.
A
— Входной массивВходной массив в виде вектора, матрицы или массива ячеек векторов или матриц.
Когда вы задаете указатель на функцию для 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
— Сгруппированные переменные или векторыvartype
индексСгруппированные переменные или векторы в виде одной из этих опций:
Для входа массивов, groupvars
может быть любой вектор-столбец с одинаковым числом строк как A
или группа вектор-столбцов располагается в матричном или массиве ячеек.
Для входных параметров таблицы или расписания, groupvars
указывает который переменные использоваться для расчета групп в данных. Можно задать сгруппированные переменные с любой из опций в этой таблице.
Опция | Описание | Примеры |
---|---|---|
Скалярное имя переменной | Вектор символов или скалярная строка, задающая одно имя табличной переменной. |
|
Вектор из имен переменных | Массив ячеек из символьных векторов или массив строк, где каждым элементом является имя табличной переменной. |
|
Скаляр или вектор из переменных индексов | Скаляр или вектор из индексов табличной переменной. | 1 [1 3 5] |
Логический скаляр или вектор | Логический вектор, элементы которого каждый соответствует табличной переменной, где |
|
Указатель на функцию | Указатель на функцию, который берет табличную переменную в качестве входа и возвращает логический скаляр. |
|
vartype индекс | Табличный индекс, сгенерированный |
|
Пример: groupsummary(T,"Var3")
method
— Метод расчета'sum'
| 'mean'
| 'median'
| 'mode'
| 'var'
| 'std'
| 'min'
| 'max'
| 'range'
| 'nummissing'
| 'nnz'
| 'all'
| указатель на функцию | массив ячеекМетод расчета в виде одного из следующего:
'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
— Табличные переменные, чтобы работать сvartype
индексТабличные переменные, чтобы работать с в виде одной из опций в этой таблице. datavars
указывает который переменные входной таблицы или расписания, чтобы применить методы к. Другие переменные, не заданные datavars
на не управляют и не передают до выхода. Когда datavars
не задан, groupsummary
работает с каждой переменной негруппировки.
Опция | Описание | Примеры |
---|---|---|
Имя переменной | Вектор символов или скалярная строка, задающая одно имя табличной переменной |
|
Вектор из имен переменных | Массив ячеек из символьных векторов или массив строк, где каждым элементом является имя табличной переменной |
|
Скаляр или вектор из переменных индексов | Скаляр или вектор из индексов табличной переменной | 1 [1 3 5] |
Логический вектор | Логический вектор, элементы которого каждый соответствует табличной переменной, где |
|
Указатель на функцию | Указатель на функцию, который берет табличную переменную в качестве входа и возвращает логический скаляр |
|
vartype индекс | Табличный индекс, сгенерированный |
|
Когда входные данные являются таблицей 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"])
groupbins
— Схема Binning'none'
(значение по умолчанию) | вектор | скаляр | массив ячеекСхема 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')
IncludedEdge
— Включенная граница интервала'left'
(значение по умолчанию) | 'right'
Включенная граница интервала в виде любого 'left'
или 'right'
, указание, какой конец интервала интервала является включенным.
Эта пара "имя-значение" может только быть задана когда groupbins
задан, и значение применяется ко всем схемам раскладывания всех сгруппированных переменных или векторов.
IncludeMissingGroups
— Недостающий индикатор группtrue
(значение по умолчанию) | false
Недостающий индикатор групп в виде true
или false
. Когда значением параметров является true
, groupsummary
группы отображений составлены из отсутствующих значений, такие как NaN
. Когда значением параметров является false
, groupsummary
не отображает недостающие группы.
Типы данных: логический
IncludeEmptyGroups
— Пустой индикатор группfalse
(значение по умолчанию) | true
Пустой индикатор групп в виде true
или false
. Когда значением параметров является false
, groupsummary
не делает дисплейных групп с нулевыми элементами. Когда значением параметров является true
, groupsummary
отображает пустые группы.
Типы данных: логический
G
— Таблица OutputВыведите таблицу, возвращенную как таблица, содержащая заданные расчеты для каждой группы.
B
— Выходной массивВыходной массив, возвращенный как вектор или матрица, содержащий расчеты группы. Когда вы задаете несколько методов, groupsummary
горизонтально конкатенирует расчеты в порядке, что они были перечислены.
BG
ГруппыГруппы для входных данных массивов, возвращенных как вектор-столбец или массив ячеек вектор-столбцов каждое соответствие группирующемуся вектору.
Когда вы обеспечиваете больше чем один группирующийся вектор, BG
массив ячеек, содержащий вектор-столбцы равной длины. Информация о группе может быть найдена путем рассмотрения элементов, построчных через все векторы в BG
. Каждая группа сопоставляет с соответствующей строкой выходного массива B
.
BC
— Количества группыГруппа значит входные данные массивов, возвращенные как вектор-столбец, содержащий число элементов в каждой группе. Длина BC
совпадает с длиной вектор-столбцов группы, возвращенных в BG
.
При совершении многих вызовов к groupsummary
, полагайте, что сгруппированные переменные преобразования вводят categorical
или logical
если это возможно, для улучшенной производительности. Например, если у вас есть сгруппированная переменная типа char
(такие как Gender
с элементами 'Male'
и 'Female'
), можно преобразовать его в категориальное значение с помощью команды categorical(Gender)
.
Указания и ограничения по применению:
Если A
и groupvars
оба высокие матрицы, затем у них должно быть одинаковое число строк.
Если первый вход является высокой матрицей, то groupvars
может быть массив ячеек, содержащий высокие векторы группировки.
groupvars
и datavars
аргументы не делают указателей функции поддержки.
'IncludeEmptyGroups'
пара "имя-значение" не поддерживается.
'median'
и 'mode'
методы не поддерживаются.
Для высоких массивов datetime, 'std'
метод не поддерживается.
Если method
аргумент является указателем на функцию, затем это должен быть допустимый вход для splitapply
работа на длинном массиве. Если указатель на функцию берет несколько входных параметров, то первый вход к groupsummary
должна быть длинная таблица.
Порядок групп может отличаться по сравнению с в оперативной памяти groupsummary
вычисления.
При группировке дискретизированными массивами datetime категориальные названия группы отличаются по сравнению с в оперативной памяти groupsummary
вычисления.
Для получения дополнительной информации см. Раздел "Высокие массивы".
backgroundPool
или ускорьте код с Parallel Computing Toolbox™ ThreadPool
.Эта функция полностью поддерживает основанные на потоке среды. Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.
grouptransform
| groupfilter
| groupcounts
| findgroups
| splitapply
| discretize
| varfun
| rowfun
| convertvars
| vartype
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.