Групповые сводные расчеты
возвращает таблицу, содержащую вычисленные группы и количество элементов в каждой группе для данных в таблице или расписании 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 - клеточный массив, содержащий два вектора, которые описывают группы по мере просмотра их элементов. Например, первая строка BG{1} говорит, что пациенты в первой группе - женщины, и первый ряд BG{2} говорит, что они некурящие. Наконец, BC содержит количество членов в каждой группе для соответствующих групп в BG.
[B,BG,BC] = groupsummary(Weight,{Gender,Smoker},'mean','IncludeEmptyGroups',true);
BB = 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. 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 оперирует с каждой переменной nongrouping.
| Выбор | Описание | Примеры |
|---|---|---|
| Имя переменной | Вектор символов или скалярная строка, задающая имя переменной одной таблицы |
|
| Вектор имен переменных | Массив ячеек символьных векторов или строковый массив, где каждый элемент является именем переменной таблицы |
|
| Скаляр или вектор переменных индексов | Скаляр или вектор индексов табличных переменных |
|
| Логический вектор | Логический вектор, элементы которого соответствуют переменной таблицы, где |
|
| Дескриптор функции | Дескриптор функции, принимающий переменную таблицы в качестве входного значения и возвращающий логический скаляр |
|
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 - Схема биннинга'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 не отображает отсутствующие группы.
Типы данных: logical
'IncludeEmptyGroups' - Индикатор пустых группfalse (по умолчанию) | trueИндикатор пустых групп, указанный как true или false. Когда значение параметра равно false, groupsummary не отображает группы с нулевыми элементами. Когда значение параметра равно true, groupsummary отображает пустые группы.
Типы данных: logical
G - Выходная таблицаВыходная таблица, возвращаемая как таблица, содержащая указанные вычисления для каждой группы.
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' методы не поддерживаются.
Для массивов tall datetime: 'std' метод не поддерживается.
Если method аргумент является дескриптором функции, то он должен быть допустимым входом для splitapply работает на высоком массиве. Если дескриптор функции принимает несколько входов, то первый вход в groupsummary должен быть высоким столом.
Порядок групп может отличаться от порядка в памяти groupsummary расчеты.
При группировании по дискретизированным массивам datetime имена категориальных групп отличаются от имен в памяти groupsummary расчеты.
Дополнительные сведения см. в разделе Массивы Tall.
convertvars | discretize | findgroups | groupcounts | groupfilter | grouptransform | rowfun | splitapply | varfun | vartype
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.