groupsummary
分组汇总计算
语法
描述
表数据
数组的数据
例子
摘要统计信息
计算表变量的汇总统计信息。
创建表T
其中包含了八个人的信息。
健康状态=分类([“穷”;“好”;“公平”;“公平”;“穷”;“优秀”;“好”;“优秀”]);年龄= [38;43;38岁;40;49个;51;52个;35);身高= [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表健康状况年龄身高体重____________ _________ ______差38 71 176良好43 68 153公平38 64 131公平40 67 133差49 64 119优秀51 62 120良好52 65 140优秀35 55 129
计算健康状态组的个数HealthStatus
作为分组变量。
G = groupsummary(T,“HealthStatus”)
G =4×2表HealthStatus GroupCount ____________ __________优秀2一般2良好2较差
计算每个健康状态组的平均年龄、身高和体重。
G = groupsummary(T,“HealthStatus”,“的意思是”)
G =4×5表HealthStatus GroupCount mean_Age mean_Height mean_Weight ____________ __________ ________ ___________ ___________ 优秀的2 43 58.5 65.5 124.5公平2 39 132好2 43.5 67.5 147.5 47.5 66.5 146.5差2
仍然按健康状况分组,只计算中位数高度。
G = groupsummary(T,“HealthStatus”,“中值”,“高度”)
G =4×3表HealthStatus GroupCount median_Height ____________ __________ _____________ 优秀的2 58.5公平2 65.5好2 66.5差2 67.5
多分组变量
使用两个分组变量对表数据进行分组。
创建表T
其中包含了八个人的信息。
健康状态=分类([“穷”;“好”;“公平”;“公平”;“穷”;“优秀”;“好”;“优秀”]);吸烟者=合乎逻辑的([1;0;0;1;1;0;0;1);重量= [176; 153; 131; 133; 119; 120; 140; 129]; T = table(HealthStatus,Smoker,Weight)
T =8×3表健康状况吸烟者体重____________ ____________差真176好假153一般假131一般真133差真119极好假120好假140极好真129
计算平均体重,按健康状况和吸烟状况分组。默认情况下,健康状态和吸烟状态的某些组合不表示在输出中,因为它们是空组。
G = groupsummary(T,[“HealthStatus”,“抽烟”),“的意思是”,“重量”)
G =6×4表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
来真正的
查看所有组组合,包括空组。
G = groupsummary(T,[“HealthStatus”,“抽烟”),“的意思是”,“重量”,“IncludeEmptyGroups”,真正的)
G =8×4表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
指定组箱
按照指定的箱子对数据进行分组。
创建一个时间表,其中包含一个月内几天的销售信息。
时间戳=日期时间([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]);利润= [2032 3071 1185 2587 1998 2899 3112 909 2619 3085]';ItemsSold = [14 13 8 5 10 16 8 6 7 11]';TT =时间表(时间戳,利润,售出物品)
TT =10×2时间表销售时间戳利润项目___________ ______ _________ 2017年3月04日- 2032 14 2017年3月02日- 3071 13 2017年3月15日- 1185 8 2017年3月10日- 2587 5 2017年3月14日- 1998年10 2017年3月31日- 2899 16 2017年3月25日- 3112 8 2017年3月29日- 909 6 2017年3月21日- 2619 7 2017年3月18日- 3085 11
计算销售项目的利润的平均值和模式,将分组分组为项目编号的区间。
格式shorteG = groupsummary(TT,“ItemsSold”,[0 4 8 12 16],{“的意思是”,“模式”},“利润”)
G =3×4表disc_ItemsSold GroupCount mean_Profit mode_Profit ______________ __________ ___________ ___________ [ 4、8)3.0000 9.0900 2.0383 e + e + 00 03 e + 02[8、12)4.0000 e + 00 2.3450 e + 03 1.1850 e + 03(12、16)3.0000 e + 00 2.6673 e + 03 2.0320 e + 03
计算一周中按天分组的平均利润。
G = groupsummary(TT,“时间戳”,“dayname”,“的意思是”,“利润”)
G =5×3表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
向量数据分组操作
创建日期向量和相应利润值向量。
时间戳=日期时间([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]);利润= [2032 3071 1185 2587 1998 2899 3112 909 2619 3085]';
计算一周中每一天的平均利润。显示平均值、组名和每个组中的成员数量。
格式shorte[meanDailyProfit,dayOfWeek,dailyCounts] = groupsummary(利润,时间戳,“dayname”,“的意思是”)
meanDailyProfit =5×12.3085e+03 1.0470e+03 3.0710e+03 2.7430e+03 2.7430e+03
dayOfWeek =5 x1分类星期二星期三星期四星期五星期六
dailyCounts =5×12 2 1 2 3
向量输入的多个分组向量
计算按健康状况和吸烟状况分组的一组人的平均体重。
将关于个体的信息存储为三个不同类型的向量。
健康状态=分类([“穷”;“好”;“公平”;“公平”;“穷”;“优秀”;“好”;“优秀”]);吸烟者=合乎逻辑的([1;0;0;1;1;0;0;1);重量= [176; 153; 131; 133; 119; 120; 140; 129];
按健康状况和吸烟状况分组,计算平均权重。
B
包含每组的平均值(南
对于空组)。BG
是一个单元格数组,其中包含两个向量,在逐行查看组的元素时描述组。例如,第一行BG {1}
表示第一组患者为健康状态优秀的
的第一行BG {2}
表明他们不吸烟。最后,公元前
中对应的组,包含每个组中的成员数BG
.
[B,BG,BC] = groupsummary(体重,{健康状态,吸烟者},“的意思是”,“IncludeEmptyGroups”,真正的);B
B =8×1120.0000 129.0000 131.0000 133.0000 146.5000 NaN NaN 147.5000
BG {1}
ans =8 x1分类优秀优秀优秀优秀优秀优秀优秀优秀可怜可怜
BG {2}
ans =8x1逻辑阵列0 1 1 1 0 1 1 0 1 1
公元前
公元前=8×11 1 1 1 2 0 0 2
多输入函数句柄
加载包含患者信息的数据,并创建一个表,描述每个患者的位置、收缩压和舒张压、身高和体重。
负载病人Location = categorical(位置);T =表(位置,收缩压,舒张压,身高,体重)
T =100×5表位置收缩压舒张压高的重量 _________________________ ________ _________ ______ ______ 县综合医院124年93 71 176 VA医院的圣玛丽的医学中心109 77 69 163 125 117 75 67 133 83 64 131 VA医院县综合医院122圣玛丽的医学中心80 64 119 121 130 88 64 142 70 68 142 VA医院VA医院的圣玛丽的医学中心115 82 68 180 115 118 86 66 78 68 183县综合医院132所县综合医院114年77 68 128圣玛丽的医学中心115 68 66 137 VA医院127 74 71 174 VA医院130 95 72 202圣玛丽医疗中心114 79 65 129 VA医院130 92 71 181
按位置分组,计算患者身高和体重的相关性,以及收缩压和舒张压的相关性。使用xcov
函数作为计算相关性的方法。的前两个输入参数xcov
描述要关联的数据,第三个参数描述滞后大小,第四个参数描述归一化的类型。对于每组计算,x
而且y
传递给xcov
由两个单元格元素的变量成对指定(“高度”、“收缩”)
而且(“重量”、“舒张期”)
.
G = groupsummary(T,“位置”@ (x, y) xcov (x, y, 0,“多项式系数”), {[“高度”,“收缩”],[“重量”,“舒张期”]})
G =3×4表位置GroupCount fun1_Height_Weight fun1_Systolic_Diastolic _________________________ __________ __________________ _______________________ 县综合医院39 0.65483 - 0.44187 24 0.62047 - 0.44466 VA医学中心的圣玛丽医院37 0.78438 - 0.62256
或者,如果数据是向量或矩阵形式,而不是表形式,则可以提供要关联的数据作为的第一个输入参数groupsummary
.
[B,BG,BC] = groupsummary({[身高,收缩压],[体重,舒张压]},位置,@(x,y) xcov(x,y,0,“多项式系数”))
B =3×20.6548 0.4419 0.6205 0.4447 0.7844 0.6226
BG =3 x1分类县总医院圣玛丽医疗中心VA医院
公元前=3×139 24 37
输入参数
T
- - - - - -输入表
表格|时间表
输入表,指定为表或时间表。
一个
- - - - - -输入数组
列向量|矩阵|单元阵列
指定为列向量的输入数组、存储为矩阵的列向量组或列向量的单元格数组、字符行向量或矩阵。
的函数句柄时方法
它接受多个输入参数,即输入数组一个
必须是列向量、字符行向量或矩阵的单元格数组。在每次按组调用函数时,输入参数是单元格数组中每个元素的对应列。例如:
groupvars groupsummary ({(x1, y1)}, @ (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
可以是行数相同的列向量一个
或排列在矩阵或单元数组中的一组列向量。对于表格或时间表输入数据,
groupvars
指示使用哪些变量来计算数据中的组。您可以使用此表中的任何选项指定分组变量。选项 描述 例子 变量名 指定单个表变量名的字符向量或字符串标量
“Var1”
“Var1”
变量名向量 字符向量或字符串数组的单元格数组,其中每个元素都是一个表变量名
{“Var1”“Var2”}
[" Var1”“Var2”)
变量指标的标量或向量 表变量索引的标量或向量
1
[1 3 5]
逻辑向量 一种逻辑向量,其每个元素对应于一个表变量,其中
真正的
包括相应的变量和假
不包括它[真真假假]
函数处理 接受表变量作为输入并返回逻辑标量的函数句柄
@isnumeric
vartype
下标类生成的表下标
vartype
函数vartype(数字)
例子:groupsummary (T,“Var3”)
方法
- - - - - -计算方法
“和”
|“的意思是”
|“中值”
|“模式”
|“var”
|“性病”
|“最小值”
|“马克斯”
|“范围”
|“nummissing”
|“nnz”
|“所有”
|函数处理|单元阵列
计算方法,指定为以下值之一:
方法 |
描述 |
---|---|
“和” |
总和 |
“的意思是” |
的意思是 |
“中值” |
中位数 |
“模式” |
模式 |
“var” |
方差 |
“性病” |
标准偏差 |
“最小值” |
最低 |
“马克斯” |
最大 |
“范围” |
最大值减去最小值 |
“nummissing” |
缺失元素数量 |
“nnz” |
非零和非的个数 |
“所有” |
前面列出的所有计算 |
你也可以指定方法
作为一个函数句柄,每个第一个维度长度为1的组返回一个输出。对于表输入数据,函数分别对每个表变量进行操作。
当输入数据是一个表时T
你指定一个函数句柄方法
它需要多个输入参数,您必须指定datavars
.的datavars
参数必须是单元格数组,其元素指示用于方法中的每个输入的表变量。在每次按组调用函数时,输入参数都是单元格数组元素的对应表变量。例如:
groupsummary (T groupvars @ (x, y) myFun (x, y),{“x1”、“日元”})
计算myFun (T.x1 T.y1)
对于每一组。groupsummary (T groupvars @ (x, y) myFun (x, y),{(“x1”“x2”)(“日元”“y2)})
第一次计算myFun (T.x1 T.y1)
对每一组进行计算myFun (T.x2 T.y2)
对于每一组。
的函数句柄时,输入数据为向量或矩阵方法
它需要多个输入参数,即输入数据一个
必须是由向量或矩阵组成的单元格数组。在每次函数调用中,输入参数都是单元格数组中每个元素的对应列。例如:
groupvars groupsummary ({(x1, y1)}, @ (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)
对于每一组。
若要一次指定多个计算,请在单元格数组中列出选项,例如{“的意思是”,“中等”}
或{myFun1, myFun2}
.
南
在使用这里描述的方法名时,输入数据中的值将被自动省略,除了“nummissing”
.包括南
值时,为方法使用函数句柄,例如@sum
而不是“和”
.
数据类型:字符
|字符串
|细胞
|function_handle
datavars
- - - - - -要操作的表变量
标量|向量|单元阵列|函数处理|表格vartype
下标
要操作的表变量,指定为此表中的选项之一。datavars
指示要将方法应用于输入表或时间表的哪些变量。未指定的其他变量datavars
不被操作,也不传递到输出。当datavars
未指定,groupsummary
对每个非分组变量进行操作。
选项 | 描述 | 例子 |
---|---|---|
变量名 | 指定单个表变量名的字符向量或字符串标量 |
|
变量名向量 | 字符向量或字符串数组的单元格数组,其中每个元素都是一个表变量名 |
|
变量指标的标量或向量 | 表变量索引的标量或向量 |
|
逻辑向量 | 一种逻辑向量,其每个元素对应于一个表变量,其中 |
|
函数处理 | 接受表变量作为输入并返回逻辑标量的函数句柄 |
|
vartype 下标 |
类生成的表下标 |
|
当输入数据是一个表时T
你指定一个函数句柄方法
它需要多个输入参数,您必须指定datavars
.的datavars
参数必须是单元格数组,其元素为表中的任何选项。单元格数组元素指示用于方法中的每个输入的表变量。在每次按组调用函数时,输入参数都是单元格数组元素的对应表变量。例如:
groupsummary (T groupvars @ (x, y) myFun (x, y),{“x1”、“日元”})
计算myFun (T.x1 T.y1)
对于每一组。groupsummary (T groupvars @ (x, y) myFun (x, y),{(“x1”“x2”)(“日元”“y2)})
第一次计算myFun (T.x1 T.y1)
对每一组进行计算myFun (T.x2 T.y2)
对于每一组。
例子:groupsummary(T,groupvars,method,["Var1" "Var2" "Var4"])
groupbins
- - - - - -装箱计划
“没有”
(默认)|标量|向量|单元阵列
分箱方案,指定为以下选项之一:
“没有”
,表示没有垃圾箱二进制边的列表,指定为数值向量或
datetime
向量为datetime
将变量或向量分组指定为正整数标量的箱的数量
一种时间持续时间,指定为类型的标量
持续时间
或calendarDuration
指示bin宽度(用于datetime
或持续时间
仅分组变量或向量)列出每个分组变量或向量的分箱方法的单元格数组
一个时间箱
datetime
而且持续时间
只对变量或向量进行分组,指定为这些字符串之一。价值 描述 数据类型 “第二”
每个箱子是1秒。
datetime
而且持续时间
“一分钟”
每个箱子是1分钟。
datetime
而且持续时间
“小时”
每个箱子是1小时。
datetime
而且持续时间
“天”
每个箱子是一个日历日。这个值考虑了夏令时的变化。
datetime
而且持续时间
“周”
每个箱子是一个日历周。 datetime
只有“月”
每个箱子是一个日历月。 datetime
只有“季”
每个箱子是一个日历季度。 datetime
只有“年”
每个箱子是一个日历年。这个值表示闰日。
datetime
而且持续时间
“十年”
每个箱子是10年(10个日历年)。 datetime
只有“世纪”
每个箱子代表一个世纪(100日历年)。 datetime
只有“secondofminute”
箱子从0秒到59秒。
datetime
只有“minuteofhour”
箱子是0到59的分钟。
datetime
只有“hourofday”
箱子的单位是从0到23。
datetime
只有“dayofweek”
箱子是从1号到7号。一周的第一天是星期天。
datetime
只有“dayname”
箱子是完整的日期名称,例如 “星期天”
.datetime
只有“dayofmonth”
箱子是从1到31的天。 datetime
只有“dayofyear”
箱是从1到366。 datetime
只有“weekofmonth”
箱子是从1到6的星期。 datetime
只有“weekofyear”
箱子是从1到54的周。 datetime
只有“monthname”
bin是完整的月份名称,例如 “1月”
.datetime
只有“monthofyear”
箱子是从1到12的月份。
datetime
只有“quarterofyear”
箱子是从1到4的四分之一。 datetime
只有
当指定多个分组变量或向量时,可以提供一个应用于所有分组变量或向量的分箱方法,或者为每个分组变量或向量提供包含分箱方法的单元格数组,例如{"none",[0 2 4 Inf]}
.
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
例子:G = groupsummary(T,groupvars,groupbins,IncludedEdge="right")
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:G = groupsummary(T,groupvars,groupbins,"IncludedEdge","right")
IncludedEdge
- - - - - -包含箱边
“左”
(默认)|“正确”
包含的bin边,指定为任意一个“左”
或“正确”
,表示包含bin间隔的哪一端。
此名称-值参数仅当groupbins
指定后,该值应用于所有分组变量或向量的所有分组方案。
IncludeMissingGroups
- - - - - -缺失群体指标
真正的
或1
(默认)|假
或0
缺失组指示符,指定为数字或逻辑1
(真正的
)或0
(假
).当的值IncludeMissingGroups
是真正的
,groupsummary
显示由缺失值组成的组,例如南
.当的值IncludeMissingGroups
是假
,groupcounts
不显示缺失的值组。
IncludeEmptyGroups
- - - - - -空组指示器
假
或0
(默认)|真正的
或1
空组指示符,指定为数字或逻辑1
(真正的
)或0
(假
).当的值IncludeEmptyGroups
是假
,groupsummary
不显示元素为零的组。当的值IncludeEmptyGroups
是真正的
,groupsummary
显示空组。
输出参数
G
-输出表
表格
输出表为表或时间表输入数据,作为表返回。G
包含计算的组、每个组中的元素数量以及if方法
提供指定计算的结果。
B
-输出数组
向量|矩阵
用于数组输入数据的输出数组,作为向量或矩阵返回。B
包含每个组的指定计算。当指定多个方法时,groupsummary
按照列出的顺序水平地连接计算。
BG
——组
列向量|单元格列向量数组
组用于数组输入数据,作为列向量或列向量的单元格数组返回。类返回的顺序对输出组进行排序独特的
函数与“排序”
选择。
对于多个输入向量,BG
包含相等长度的列向量的单元格数组。中所有向量的一行元素中包含了每个组的信息BG
.每个组映射到输出数组的相应行B
.
公元前
-小组计数
列向量
数组输入数据的组计数,作为列向量返回。公元前
包含每个组中的元素数量。的长度公元前
是否与返回的组列向量的长度相同BG
.
提示
当打许多电话给
groupsummary
,考虑将分组变量转换为类型分类
或逻辑
在可能的情况下提高性能。例如,如果您有一个字符串数组分组变量(如HealthStatus
与元素“穷”
,“公平”
,“好”
,“优秀”
),您可以使用命令将其转换为类别变量分类(HealthStatus)
.
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
使用注意事项和限制:
如果
一个
而且groupvars
都是高矩阵,那么它们必须有相同的行数。如果第一个输入是一个高矩阵,那么
groupvars
可以是包含高分组向量的单元格数组。的
groupvars
而且datavars
参数不支持函数句柄。金宝app的
IncludeEmptyGroups
不支持名称-值参数。金宝app的
“中值”
而且“模式”
方法不受支持。金宝app对于高datetime数组,使用
“性病”
方法不支持。金宝app如果
方法
参数是函数句柄,则它必须是的有效输入splitapply
在高阵列上操作。如果函数句柄接受多个输入,则第一个输入为groupsummary
这张桌子一定很高。与内存中的组相比,组的顺序可能不同
groupsummary
计算。当按离散的datetime数组分组时,分类组名称与内存中的不同
groupsummary
计算。
有关更多信息,请参见高大的数组.
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
不支持稀疏输入。金宝app
不支持datetime或duration数据金宝app的分箱方案。
不支持内容大小可变的异构单元格数组的输入数据。金宝app
不支持包含多维数组的输入表。金宝app
不支持包含字符向量的单元格数组或单元格数组的单元格数组的输入数据。金宝app
计算方法必须是不变的。
当第一个输入参数是一个表时,分组变量必须是常量。
数据变量必须为常数。
指定为字符向量或字符串的分箱方案必须为常量。
名称-值参数必须为常量。
计算方法不能返回稀疏或多维结果。
如果组变量的数量在运行时可以改变,则第二次输出
BG
是单元格数组。
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
版本历史
在R2018a中引入R2022b:字符数组没有标准缺失值
字符数组没有标准缺失值的默认定义。因此,nummissing
方法处理空白字符数组元素(' '
)为非缺失。
R2022a:代码生成支持金宝app
的C或c++代码groupsummary
函数。有关使用说明和限制,请参见C/ c++代码生成.
R2022a:在较小的团队规模下提高性能
的groupsummary
函数显示了改进的性能,特别是当每组中的数据计数较小时。
例如,这段代码在一个包含500个组的矩阵上执行组摘要计算,每个组的计数为10。该代码比前一个版本快了大约2.70倍。
函数timingGroupsummary data = (1:5000)';Groups = repelem(1:length(data)/10,10)';P = randperm(长度(数据));数据=数据(p);Groups = Groups (p);抽搐为k = 1:300 G = groupsummary(数据,组,“的意思是”);结束toc结束
大致的执行时间为:
R2021b:2.65秒
R2022a:0.98秒
代码是在Windows上计时的®10日,英特尔®至强®CPU E5-1650 v4 @ 3.60 GHz测试系统调用timingGroupsummary
函数。
R2022a:接受没有标准缺失值的数据类型
的“nummissing”
而且“nnz”
方法对于没有标准缺失值默认定义的输入数据类型不再出错。
依赖于MATLAB为这些输入抛出的错误的代码,例如试一试
/抓
块,可能不再捕获这些错误。
另请参阅
功能
实时编辑任务
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。