主要内容

groupsummary

分组汇总计算

描述

表数据

例子

G= groupsummary (Tgroupvars返回表或时间表的唯一分组变量组合和每个组中的成员数量T.中的变量中的行定义组groupvars它们有着相同的独特的值组合。输出表的每一行对应一个组。例如,G = groupsummary(T,"健康状态")返回一个表,其中包含变量中每个组的计数HealthStatus

G= groupsummary (Tgroupvars方法中指定的分组计算方法并将计算结果作为附加变量附加到输出表。例如,G = groupsummary(T,"Location","median")中每个非分组变量的中值T对于每个位置,除了每个位置组中的成员数量外。

例子

G= groupsummary (Tgroupvars方法datavars指定要将方法应用于的表变量。

G= groupsummary (Tgroupvarsgroupbins指定bin中的行groupvars根据分箱方案groupbins在分组之前。例如,G = groupsummary(T,"SaleDate","year")返回中所有销售的组计数T每年根据分组变量SaleDate

例子

G= groupsummary (Tgroupvarsgroupbins方法指定如何将数据装入groupvars中指定的分组和按分组计算方法

G= groupsummary (Tgroupvarsgroupbins方法datavars指定要将方法应用于的表变量。

例子

G= groupsummary (___名称,值为任何先前的语法使用一个或多个名称-值参数指定其他分组属性。例如,G = groupsummary(T,"Category1","IncludeMissingGroups",false)排除由类型缺失的数据组成的组分类所示<定义>Category1

数组的数据

B= groupsummary (一个groupvars方法中应用分组计算的连接结果方法到向量、矩阵或单元格数组中的唯一组一个.中的列向量中的行定义组groupvars它们有着相同的独特的值组合。输出数组的每一行都包含一个组的计算结果。

例子

B= groupsummary (一个groupvarsgroupbins方法指定bin中的行groupvars根据分箱方案groupbins在分组之前。

例子

B= groupsummary (___名称,值为输入数组的前一种语法使用一个或多个名称-值参数指定其他分组属性。

例子

BBG公元前= groupsummary(一个___返回额外的组信息。BG唯一的分组向量组合是否对应于其中的行B公元前每组的成员人数在吗BG

例子

全部折叠

计算表变量的汇总统计信息。

创建表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

输入参数

全部折叠

输入表,指定为表或时间表。

指定为列向量的输入数组、存储为矩阵的列向量组或列向量的单元格数组、字符行向量或矩阵。

的函数句柄时方法它接受多个输入参数,即输入数组一个必须是列向量、字符行向量或矩阵的单元格数组。在每次按组调用函数时,输入参数是单元格数组中每个元素的对应列。例如:

  • 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可以是行数相同的列向量一个或排列在矩阵或单元数组中的一组列向量。

  • 对于表格或时间表输入数据,groupvars指示使用哪些变量来计算数据中的组。您可以使用此表中的任何选项指定分组变量。

    选项 描述 例子
    变量名

    指定单个表变量名的字符向量或字符串标量

    “Var1”

    “Var1”

    变量名向量

    字符向量或字符串数组的单元格数组,其中每个元素都是一个表变量名

    {“Var1”“Var2”}

    [" Var1”“Var2”)

    变量指标的标量或向量

    表变量索引的标量或向量

    1

    [1 3 5]

    逻辑向量

    一种逻辑向量,其每个元素对应于一个表变量,其中真正的包括相应的变量和不包括它

    [真真假假]

    函数处理

    接受表变量作为输入并返回逻辑标量的函数句柄

    @isnumeric

    vartype下标

    类生成的表下标vartype函数

    vartype(数字)

例子:groupsummary (T,“Var3”)

计算方法,指定为以下值之一:

方法

描述
“和” 总和
“的意思是” 的意思是
“中值” 中位数
“模式” 模式
“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指示要将方法应用于输入表或时间表的哪些变量。未指定的其他变量datavars不被操作,也不传递到输出。当datavars未指定,groupsummary对每个非分组变量进行操作。

选项 描述 例子
变量名

指定单个表变量名的字符向量或字符串标量

“Var1”

“Var1”

变量名向量

字符向量或字符串数组的单元格数组,其中每个元素都是一个表变量名

{“Var1”“Var2”}

[" Var1”“Var2”)

变量指标的标量或向量

表变量索引的标量或向量

1

[1 3 5]

逻辑向量

一种逻辑向量,其每个元素对应于一个表变量,其中真正的包括相应的变量和不包括它

[真真假假]

函数处理

接受表变量作为输入并返回逻辑标量的函数句柄

@isnumeric

vartype下标

类生成的表下标vartype函数

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"])

分箱方案,指定为以下选项之一:

  • “没有”,表示没有垃圾箱

  • 二进制边的列表,指定为数值向量或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")

包含的bin边,指定为任意一个“左”“正确”,表示包含bin间隔的哪一端。

此名称-值参数仅当groupbins指定后,该值应用于所有分组变量或向量的所有分组方案。

缺失组指示符,指定为数字或逻辑1真正的)或0).当的值IncludeMissingGroups真正的groupsummary显示由缺失值组成的组,例如.当的值IncludeMissingGroupsgroupcounts不显示缺失的值组。

空组指示符,指定为数字或逻辑1真正的)或0).当的值IncludeEmptyGroupsgroupsummary不显示元素为零的组。当的值IncludeEmptyGroups真正的groupsummary显示空组。

输出参数

全部折叠

输出表为表或时间表输入数据,作为表返回。G包含计算的组、每个组中的元素数量以及if方法提供指定计算的结果。

用于数组输入数据的输出数组,作为向量或矩阵返回。B包含每个组的指定计算。当指定多个方法时,groupsummary按照列出的顺序水平地连接计算。

组用于数组输入数据,作为列向量或列向量的单元格数组返回。类返回的顺序对输出组进行排序独特的函数与“排序”选择。

对于多个输入向量,BG包含相等长度的列向量的单元格数组。中所有向量的一行元素中包含了每个组的信息BG.每个组映射到输出数组的相应行B

数组输入数据的组计数,作为列向量返回。公元前包含每个组中的元素数量。的长度公元前是否与返回的组列向量的长度相同BG

提示

  • 当打许多电话给groupsummary,考虑将分组变量转换为类型分类逻辑在可能的情况下提高性能。例如,如果您有一个字符串数组分组变量(如HealthStatus与元素“穷”“公平”“好”,“优秀”),您可以使用命令将其转换为类别变量分类(HealthStatus)

扩展功能

版本历史

在R2018a中引入

全部展开