Группирование сводных данных расчетов
возвращает таблицу, содержащую вычисленные группы и количество элементов в каждой группе для данных в таблице или расписании 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.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
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
указывает, какие переменные использовать для вычисления групп в данных. Можно задать сгруппированные переменные с любой из опций в этой таблице.
Опция | Описание | Примеры |
---|---|---|
Скалярное имя переменной | Вектор символов или скалярная строка, задающая одно имя табличной переменной. |
|
Вектор имен переменных | Массив ячеек из векторов символов или строковых массивов, где каждый элемент является именем табличной переменной. |
|
Скаляр или вектор переменных индексов | Скаляр или вектор табличных переменных. |
|
Логический скаляр или вектор | Логический вектор, элементы которого каждый соответствуют табличной переменной, где |
|
Указатель на функцию | Указатель на функцию, который принимает табличную переменную как вход и возвращает логический скаляр. |
|
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'
- число ненулевых и ненулевых 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
- Табличные переменные для работыvartype
индексТабличные переменные для работы, заданные как один из опций в этой таблице. datavars
указывает, к каким переменным таблицы входа или timetable применять методы. Другие переменные, не заданные datavars
не управляются и не проходят через выход. Когда datavars
не задан, groupsummary
действует с каждой переменной, не входящей в группу.
Опция | Описание | Примеры |
---|---|---|
Имя переменной | Вектор символов или скалярная строка, задающая имя табличной переменной |
|
Вектор имен переменных | Массив ячеек из векторов символов или строковых массивов, где каждый элемент является именем табличной переменной |
|
Скаляр или вектор переменных индексов | Скаляр или вектор табличных переменных |
|
Логический вектор | Логический вектор, элементы которого каждый соответствуют табличной переменной, где |
|
Указатель на функцию | Указатель на функцию, который принимает табличную переменную как вход и возвращает логический скаляр |
|
vartype индекс | Индекс таблицы, сгенерированный |
|
Когда входные данные являются таблицей 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"])
groupbins
- Схема раскладывания'none'
(по умолчанию) | вектор | скаляр | массив ячеекСхема раскладывания, заданная как один из следующих опций:
'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
не отображает отсутствующие группы.
Типы данных: logical
'IncludeEmptyGroups'
- Индикатор пустых группfalse
(по умолчанию) | true
Индикатор пустых групп, заданный как true
или false
. Когда значение параметров false
, groupsummary
не отображает группы с нулевыми элементами. Когда значение параметров true
, groupsummary
отображает пустые группы.
Типы данных: logical
G
- Выходная таблицаВыходная таблица, возвращенная как таблица, содержащая указанные расчеты для каждой группы.
B
- Выходной массивВыходной массив, возвращенный как вектор или матрица, содержащая расчеты. Когда вы задаете несколько методов, groupsummary
горизонтально конкатенирует расчеты в том порядке, в котором они были перечислены.
BG
ГруппыГруппы для входных данных массива, возвращенные как вектор-столбец или массив ячеек векторов-столбцов каждый, соответствующий вектор группировки.
Когда вы предоставляете более одного вектора группировки, BG
- массив ячеек, содержащий векторы-столбцы равной длины. Информацию о группе можно найти, посмотрев на элементы rowwish во всех векторах в BG
. Каждая группа преобразуется в соответствующую строку выходного массива B
.
BC
- Счетчики группКоличество групп для входных данных массива, возвращаемое как вектор-столбец, содержащее количество элементов в каждой группе. Длина BC
совпадает с длиной групповых векторов-столбцов, возвращаемой в BG
.
При совершении многих вызовов в groupsummary
, рассмотрите преобразование сгруппированных переменных в тип categorical
или logical
по возможности для улучшенной производительности. Например, если у вас есть сгруппированная переменная типа char
(такие как Gender
с элементами 'Male'
и 'Female'
), можно преобразовать его в категориальное значение с помощью команды categorical(Gender)
.
Указания и ограничения по применению:
Если A
и groupvars
обе высокие матрицы, тогда они должны иметь одинаковое число строк.
Если первый вход является tall matrix, то groupvars
может быть массивом ячеек, содержащим tall group vectors.
The groupvars
и datavars
аргументы не поддерживают указатели на функцию.
The 'IncludeEmptyGroups'
Пара "имя-значение" не поддерживается.
The 'median'
и 'mode'
методы не поддерживаются.
Для tall массивы datetime, 'std'
метод не поддерживается.
Если на method
аргумент является указателем на функцию, тогда он должен быть допустимым входом для splitapply
работа с длинный массив. Если указатель на функцию принимает несколько входов, то первый вход в groupsummary
должен быть длинная таблица.
Порядок групп может отличаться от порядка в памяти groupsummary
вычисления.
При группировке дискретизированными массивами datetime категориальные имена групп отличаются от имен в памяти groupsummary
вычисления.
Для получения дополнительной информации см. Раздел «Длинные массивы»
convertvars
| discretize
| findgroups
| groupcounts
| groupfilter
| grouptransform
| rowfun
| splitapply
| varfun
| vartype
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.