groupsummary
组汇总计算
语法
说明
表数据
使用一个或多个名称-值参量为上述语法指定其他分组属性。例如,G
= groupsummary(___,Name,Value
)G = groupsummary(T,"Category1","IncludeMissingGroups",false)
将排除由 Category1
中的 <undefined>
所指示的 categorical
类型的缺失数据构成的组。
示例
摘要统计量
计算表变量的摘要统计量。
创建一个包含八个人信息的表 T
。
HealthStatus = categorical(["Poor"; "Good"; "Fair"; "Fair"; "Poor"; "Excellent"; "Good"; "Excellent"]); Age = [38; 43; 38; 40; 49; 51; 52; 35]; Height = [71; 68; 64; 67; 64; 62; 65; 55]; Weight = [176; 153; 131; 133; 119; 120; 140; 129]; T = table(HealthStatus,Age,Height,Weight)
T=8×4 table
HealthStatus Age Height Weight
____________ ___ ______ ______
Poor 38 71 176
Good 43 68 153
Fair 38 64 131
Fair 40 67 133
Poor 49 64 119
Excellent 51 62 120
Good 52 65 140
Excellent 35 55 129
通过将 HealthStatus
指定为分组变量,计算每个健康状况组的人员计数。
G = groupsummary(T,"HealthStatus")
G=4×2 table
HealthStatus GroupCount
____________ __________
Excellent 2
Fair 2
Good 2
Poor 2
计算每个健康状况组的均值年龄、身高和体重。
G = groupsummary(T,"HealthStatus","mean")
G=4×5 table
HealthStatus GroupCount mean_Age mean_Height mean_Weight
____________ __________ ________ ___________ ___________
Excellent 2 43 58.5 124.5
Fair 2 39 65.5 132
Good 2 47.5 66.5 146.5
Poor 2 43.5 67.5 147.5
仍按健康状况分组,只计算中位数身高。
G = groupsummary(T,"HealthStatus","median","Height")
G=4×3 table
HealthStatus GroupCount median_Height
____________ __________ _____________
Excellent 2 58.5
Fair 2 65.5
Good 2 66.5
Poor 2 67.5
多个分组变量
使用两个分组变量对表数据进行分组。
创建一个包含八个人信息的表 T
。
HealthStatus = categorical(["Poor"; "Good"; "Fair"; "Fair"; "Poor"; "Excellent"; "Good"; "Excellent"]); Smoker = logical([1; 0; 0; 1; 1; 0; 0; 1]); Weight = [176; 153; 131; 133; 119; 120; 140; 129]; T = table(HealthStatus,Smoker,Weight)
T=8×3 table
HealthStatus Smoker Weight
____________ ______ ______
Poor true 176
Good false 153
Fair false 131
Fair true 133
Poor true 119
Excellent false 120
Good false 140
Excellent true 129
按健康状况和是否吸烟分组,计算每组的均值体重。默认情况下,健康状况和是否吸烟的某些组合不会显示在输出中,因为它们是空组。
G = groupsummary(T,["HealthStatus","Smoker"],"mean","Weight")
G=6×4 table
HealthStatus Smoker GroupCount mean_Weight
____________ ______ __________ ___________
Excellent false 1 120
Excellent true 1 129
Fair false 1 131
Fair true 1 133
Good false 2 146.5
Poor true 2 147.5
将 IncludeEmptyGroups
的值设置为 true
以查看所有组组合,包括空组组合。
G = groupsummary(T,["HealthStatus","Smoker"],"mean","Weight","IncludeEmptyGroups",true)
G=8×4 table
HealthStatus Smoker GroupCount mean_Weight
____________ ______ __________ ___________
Excellent false 1 120
Excellent true 1 129
Fair false 1 131
Fair true 1 133
Good false 2 146.5
Good true 0 NaN
Poor false 0 NaN
Poor true 2 147.5
指定组分 bin
根据指定的分 bin 条件对数据进行分组。
创建一个时间表,其中包含一个月内某些日期的销售信息。
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]'; ItemsSold = [14 13 8 5 10 16 8 6 7 11]'; TT = timetable(TimeStamps,Profit,ItemsSold)
TT=10×2 timetable
TimeStamps Profit ItemsSold
___________ ______ _________
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
将售出商品数量按数量区间分 bin,计算每个分 bin 的商品利润均值和众数。
format shorte G = groupsummary(TT,"ItemsSold",[0 4 8 12 16],{"mean","mode"},"Profit")
G=3×4 table
disc_ItemsSold GroupCount mean_Profit mode_Profit
______________ __________ ___________ ___________
[4, 8) 3.0000e+00 2.0383e+03 9.0900e+02
[8, 12) 4.0000e+00 2.3450e+03 1.1850e+03
[12, 16] 3.0000e+00 2.6673e+03 2.0320e+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
对向量输入使用多个分组向量
按健康状况和是否吸烟将一群人分组,计算每组人员的均值体重。
将个人信息存储为三种不同类型的向量。
HealthStatus = categorical(["Poor"; "Good"; "Fair"; "Fair"; "Poor"; "Excellent"; "Good"; "Excellent"]); Smoker = logical([1; 0; 0; 1; 1; 0; 0; 1]); Weight = [176; 153; 131; 133; 119; 120; 140; 129];
按健康状况和是否吸烟分组,计算均值体重。
B
包含每个组的均值(空组为 NaN
)。BG
是包含两个向量的元胞数组,按行查看向量中的元素即可找到对应组的描述。例如,BG{1}
的第一行表示第一组患者的健康状况为 Excellent
,BG{2}
的第一行表示他们不吸烟。最后,BC
包含 BG
中对应组的每个组中的成员数。
[B,BG,BC] = groupsummary(Weight,{HealthStatus,Smoker},"mean","IncludeEmptyGroups",true); B
B = 8×1
120.0000
129.0000
131.0000
133.0000
146.5000
NaN
NaN
147.5000
BG{1}
ans = 8x1 categorical
Excellent
Excellent
Fair
Fair
Good
Good
Poor
Poor
BG{2}
ans = 8x1 logical array
0
1
0
1
0
1
0
1
BC
BC = 8×1
1
1
1
1
2
0
0
2
具有多个输入的方法函数句柄
加载包含患者信息的数据,并创建一个表,说明每个患者的位置、收缩压和舒张压、身高和体重。
load patients
Location = categorical(Location);
T = table(Location,Systolic,Diastolic,Height,Weight)
T=100×5 table
Location Systolic Diastolic Height Weight
_________________________ ________ _________ ______ ______
County General Hospital 124 93 71 176
VA Hospital 109 77 69 163
St. Mary's Medical Center 125 83 64 131
VA Hospital 117 75 67 133
County General Hospital 122 80 64 119
St. Mary's Medical Center 121 70 68 142
VA Hospital 130 88 64 142
VA Hospital 115 82 68 180
St. Mary's Medical Center 115 78 68 183
County General Hospital 118 86 66 132
County General Hospital 114 77 68 128
St. Mary's Medical Center 115 68 66 137
VA Hospital 127 74 71 174
VA Hospital 130 95 72 202
St. Mary's Medical Center 114 79 65 129
VA Hospital 130 92 71 181
⋮
按位置分组,计算患者身高和体重的相关性以及收缩压和舒张压的相关性。使用 xcov
函数作为计算相关性的方法。xcov
的前两个输入参量说明要关联的数据,第三个参量说明滞后大小,第四个参量说明归一化的类型。对于每组计算,传递到 xcov
中的 x
和 y
参量由 ["Height","Systolic"]
和 ["Weight","Diastolic"]
这两个元胞元素中的变量成对指定。
G = groupsummary(T,"Location",@(x,y) xcov(x,y,0,"coeff"),{["Height","Systolic"],["Weight","Diastolic"]})
G=3×4 table
Location GroupCount fun1_Height_Weight fun1_Systolic_Diastolic
_________________________ __________ __________________ _______________________
County General Hospital 39 0.65483 0.44187
St. Mary's Medical Center 24 0.62047 0.44466
VA Hospital 37 0.78438 0.62256
或者,如果您的数据是向量或矩阵形式,而不是表形式,您可以将要关联的数据作为 groupsummary
的第一个输入参量提供。
[B,BG,BC] = groupsummary({[Height,Systolic],[Weight,Diastolic]},Location,@(x,y) xcov(x,y,0,"coeff"))
B = 3×2
0.6548 0.4419
0.6205 0.4447
0.7844 0.6226
BG = 3x1 categorical
County General Hospital
St. Mary's Medical Center
VA Hospital
BC = 3×1
39
24
37
输入参数
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
指示使用哪些变量来计算数据中的组。您可以使用下表中的任何选项来指定分组变量。索引方案 示例 变量名称:
字符串或字符向量
字符串数组或字符向量元胞数组
pattern
对象
"A"
或'A'
- 名为A
的变量["A" "B"]
或{'A','B'}
- 两个名为A
和B
的变量"Var"+digitsPattern(1)
- 变量名为"Var"
后跟一个数字
变量索引:
引用变量在表中位置的索引编号
由数字组成的向量
逻辑向量。通常,此向量的长度与变量的数目相同,但可以省略尾部的
0
或false
值。
3
- 表中的第三个变量[2 3]
- 表中的第二个和第三个变量[false false true]
- 第三个变量
函数句柄:
函数句柄,以表变量作为输入并返回逻辑标量
@isnumeric
- 所有包含数值的变量
变量类型:
vartype
下标,用于选择指定类型的变量
vartype("numeric")
- 所有包含数值的变量
示例: groupsummary(T,"Var3")
method
— 计算方法
"sum"
| "mean"
| "median"
| "all"
| 函数句柄 | 元胞数组 | ...
计算方法,指定为下列值之一:
方法 | 描述 |
---|---|
"sum" | 总和 |
"mean" | 均值 |
"median" | 中位数 |
"mode" | 模式 |
"var" | 方差 |
"std" | 标准差 |
"min" | 最小值 |
"max" | 最大值 |
"range" | 最大值减去最小值 |
"nummissing" | 缺失元素的数量 |
"numunique" | 不同非缺失元素的数量 |
"nnz" | 非零和非 |
"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
对每个非分组变量进行操作。
索引方案 | 示例 |
---|---|
变量名称:
|
|
变量索引:
|
|
函数句柄:
|
|
变量类型:
|
|
当输入数据是表 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
— 分组变量或向量的分 bin 方案
"none"
(默认) | 由 bin 边界组成的向量 | bin 数量 | 时间长度(bin 宽度) | 时间单位名称(bin 宽度) | 由分 bin 方法组成的元胞数组
分组变量或向量的分 bin 方案,指定为以下一种或多种分 bin 方法。分组变量或向量和分 bin 方案参量的大小必须相同,或其中之一可以为标量。
"none"
- 无分 bin。由 bin 边界组成的向量 - bin 边界定义 bin。对于
datetime
分组变量或向量,可以将边界指定为数值或datetime
值。bin 数目 - 该数目确定要创建多少个等间距 bin。可以将 bin 数目指定为正整数标量。
时间长度(bin 宽度)- 时间长度确定每个 bin 的宽度。对于
datetime
或duration
分组变量或向量,可以将 bin 宽度指定为duration
或calendarDuration
标量。时间单位的名称(bin 宽度)- 时间单位的名称确定每个 bin 的宽度。对于
datetime
或duration
分组变量或向量,可以将 bin 宽度指定为下表中的选项之一。值 描述 数据类型 "second"
每个 bin 是 1 秒。
datetime
和duration
"minute"
每个 bin 是 1 分钟。
datetime
和duration
"hour"
每个 bin 是 1 小时。
datetime
和duration
"day"
每个 bin 表示 1 个日历日。此值将夏令时变化考虑在内。
datetime
和duration
"week"
每个 bin 是 1 个日历周。 仅限 datetime
"month"
每个 bin 是 1 个日历月。 仅限 datetime
"quarter"
每个 bin 是 1 个日历季度。 仅限 datetime
"year"
每个 bin 表示 1 个日历年。此值将闰日考虑在内。
datetime
和duration
"decade"
每个 bin 是 1 个十年(10 个日历年)。 仅限 datetime
"century"
每个 bin 是 1 个世纪(100 个日历年)。 仅限 datetime
"secondofminute"
bin 从 0 到 59 秒。
仅限 datetime
"minuteofhour"
bin 从 0 到 59 分钟。
仅限 datetime
"hourofday"
bin 从 0 到 23 小时。
仅限 datetime
"dayofweek"
bin 从 1 到 7 日。一周的第一天是星期天。
仅限 datetime
"dayname"
bin 是一周中某天的全称,例如 "Sunday"
。仅限 datetime
"dayofmonth"
bin 从 1 到 31 天。 仅限 datetime
"dayofyear"
bin 从 1 到 366 天。 仅限 datetime
"weekofmonth"
bin 从 1 到 6 周。 仅限 datetime
"weekofyear"
bin 从 1 到 54 周。 仅限 datetime
"monthname"
bin 是完整的月份名称,如 "January"
。仅限 datetime
"monthofyear"
bin 从 1 到 12 个月。
仅限 datetime
"quarterofyear"
bin 从 1 到 4 个季度。 仅限 datetime
示例: G = groupsummary(T,"Var1",[-Inf 0 Inf])
示例: G = groupsummary(T,["Var1" "Var2"],{"none" "year"})
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
示例: G = groupsummary(T,groupvars,groupbins,IncludedEdge="right")
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: G = groupsummary(T,groupvars,groupbins,"IncludedEdge","right")
IncludedEdge
— 在分 bin 方案中包括 bin 边界
"left"
(默认) | "right"
在分 bin 方案中包括 bin 边界,指定为 "left"
或 "right"
,指示包括 bin 区间的哪一边。
仅当指定了 groupbins
时,才能指定 IncludedEdge
,并且该值适用于所有分组变量或向量的所有分 bin 方法。
IncludeMissingGroups
— 指定是否将缺失值视为组的选项
true
或 1
(默认) | false
或 0
指定是否将缺失值视为组的选项,指定为数值或逻辑值 1
(true
) 或 0
(false
)。如果 IncludeMissingGroups
为 true
,则 groupsummary
会将分组变量或向量中的缺失值(如 NaN
)视为一个组。如果分组变量或向量没有缺失值,或如果 IncludeMissingGroups
为 false
,则 groupsummary
不会将缺失值视为一个组。
IncludeEmptyGroups
— 在组汇总操作中包含空组的选项
false
或 0
(默认) | true
或 1
在组汇总操作中包括空组的选项,指定为数值或逻辑值 0
(false
) 或 1
(true
)。如果 IncludeEmptyGroups
为 false
,则 groupsummary
忽略空组。如果 IncludeEmptyGroups
为 true
,则 groupsummary
包括空组。
在以下情况下会出现空组:
分组变量或向量的可能值未在输入数据(例如在分类、逻辑或分 bin 数值变量或向量)中表示。例如,如果输入表中任一行的逻辑分组变量的值都不为
true
,则true
定义的是一个空组。分组变量或向量的唯一组合未在输入数据中表示。例如,如果输入表中任一行的分组变量
A
的值都不为A1
且分组变量B
的值都不为B1
,则A1_B1
定义的是一个空组。
输出参量
G
— 输出表
表
表或时间表输入数据的输出表,以表形式返回。G
包含计算的组、每个组中的元素数,以及指定计算的结果(如果提供了 method
)。
B
— 输出数组
向量 | 矩阵
数组输入数据的输出数组,以向量或矩阵形式返回。B
包含每个组的指定计算。当指定多个方法时,groupsummary
按照列出的顺序水平串联计算。
BG
— 组
列向量 | 列向量元胞数组
数组输入数据的组,以列向量或列向量元胞数组形式返回。对于单个分组向量,输出组根据带 "sorted"
选项的 unique
函数返回的顺序进行排序。
对于多个输入向量,BG
是包含相等长度的列向量的元胞数组。每个组的信息包含在 BG
各个向量对应的行元素中。每组映射到输出数组 B
的对应行。
BC
— 组计数
列向量
数组输入数据的组计数,返回为一个列向量,BC
中包含每个组中的元素数。BC
的长度与在 BG
中返回的组列向量的长度相同。
详细信息
组汇总计算
下表说明组汇总计算。
示例表 T | 语法示例 | 生成的表 |
---|---|---|
| groupsummary(T,"VarA") | |
groupsummary(T,"VarA","mean") | | |
groupsummary(T,["VarA" "VarB"],{"none",[-Inf 0 Inf]},"min") | | |
groupsummary(T,"VarA",["mean" "median" "mode"],"VarB") | |
提示
当多次调用
groupsummary
时,请考虑尽可能将分组变量转换为categorical
或logical
类型以提高性能。例如,如果您有字符串数组分组变量(例如HealthStatus
,其中元素为"Poor"
、"Fair"
、"Good"
和"Excellent"
),您可以使用命令categorical(HealthStatus)
将其转换为分类变量。groupsummary
函数计算一维摘要统计量。要计算二维分组汇总,请考虑使用pivot
函数。
替代功能
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
用法说明和限制:
如果
A
和groupvars
均为 tall 矩阵,则它们必须具有相同的行数。如果第一个输入是 tall 矩阵,则
groupvars
可以是包含 tall 分组向量的元胞数组。groupvars
和datavars
参量不支持函数句柄。不支持
IncludeEmptyGroups
名称-值参量。不支持
"median"
、"mode"
和"numunique"
方法,并且在指定"all"
方法时不包括这些方法。tall 日期时间数组不支持
"std"
方法。如果
method
参量为函数句柄,则它必须是对 tall 数组执行的splitapply
的有效输入。如果函数句柄接受多个输入,则groupsummary
的第一个输入必须为 tall 表。组的顺序可能不同于内存中的
groupsummary
计算结果。按照离散的日期时间数组分组时,分类组名称将不同于内存中的
groupsummary
计算结果。
有关详细信息,请参阅 tall 数组。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
不支持稀疏输入。
日期时间或持续时间数据不支持分 bin 方案。
不支持内容大小可变的作为异类元胞数组的输入数据。
不支持包含多维数组的输入表。
不支持包含字符向量元胞数组或由元胞数组组成的元胞数组的输入数据。
计算方法必须为常量。
当第一个输入参量是表时,分组变量必须为常量。
数据变量必须为常量。
数据变量不能为嵌套表。
指定为字符向量或字符串的分 bin 方案必须为常量。
名称-值参量必须为常量。
计算方法无法返回稀疏、多维或元胞数组结果。
如果组变量的数目可以在运行时更改,则第二个输出
BG
是元胞数组。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2018a 中推出R2024a: 对分组变量应用多种分 bin 方法
通过指定分 bin 方法的元胞数组将多种分 bin 方法应用于一个分组变量或向量。
R2023a: 返回唯一元素的数量
计算每组数据中不同非缺失元素的数量。指定 "numunique"
或 "all"
计算方法。
除了上一版本中的计算方法之外,"all"
计算方法现在还返回唯一值的数目。
R2022b: 字符数组没有标准缺失值
字符数组没有标准缺失值的默认定义。因此,nummissing
方法将空白字符数组元素 (' '
) 视为非缺失。
R2022a: 代码生成支持
为 groupsummary
函数生成 C 或 C++ 代码。有关用法说明和限制,请参阅 C/C++ 代码生成。
R2022a: 改进了处理小型组时的性能
groupsummary
函数显示性能得到改进,尤其是在每个组中的数据量较小时。
例如,以下代码对有 500 个组(每个组的计数为 10)的矩阵执行组汇总计算。代码比前一版本大约快 2.70 倍。
function timingGroupsummary data = (1:5000)'; groups = repelem(1:length(data)/10,10)'; p = randperm(length(data)); data = data(p); groups = groups(p); tic for k = 1:300 G = groupsummary(data,groups,"mean"); end toc end
大致的执行时间是:
R2021b:2.65 秒
R2022a:0.98 秒
代码是在运行 Windows® 10 的 Intel® Xeon® CPU E5-1650 v4 @ 3.60 GHz 测试系统上通过调用 timingGroupsummary
函数进行计时的。
R2022a: 接受没有标准缺失值的数据类型
对于没有标准缺失值的默认定义的输入数据类型,"nummissing"
和 "nnz"
方法不再报错。
对于依赖 MATLAB 针对这些输入而引发错误的代码,例如 try
/catch
代码块中的代码,可能将无法再捕获这些错误。
另请参阅
函数
pivot
|grouptransform
|groupfilter
|groupcounts
|findgroups
|splitapply
|discretize
|varfun
|rowfun
|convertvars
|vartype
实时编辑器任务
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)