Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

groupcounts

分组元素的数量

说明

示例

G = groupcounts(T,groupvars) 计算表或时间表中每组数据的元素数,并返回包含组、组计数以及每个计数所表示的百分比(0 到 100)的表。每个组由 groupvars 中分组变量的唯一组合定义。例如,G = groupcounts(T,'Gender') 返回一个表,该表显示变量 Gender 中所有其他类别的 Male 元素的数量、Female 元素的数量等。

示例

G = groupcounts(T,groupvars,groupbins) 指定如何对 groupvars 中的数据进行分 bin。例如,G = groupcounts(T,'SaleDate','year') 根据 SaleDate 给出年销售额和百分比。

示例

G = groupcounts(___,Name,Value) 使用一个或多个名称-值对组为上述语法指定其他分组属性。例如,G = groupcounts(T,'Category1','IncludeMissingGroups',false) 将排除由缺失 categorical 数据(通过 <undefined> 指示)构成的组。

B = groupcounts(A) 返回一个向量,该向量包含列向量、矩阵或列向量元胞数组 A 所表示的分组向量的各个唯一组合的组计数。

B = groupcounts(A,groupbins) 根据 groupbins 对数据分 bin。

B = groupcounts(___,Name,Value) 使用一个或多个名称-值对组指定其他分组属性。

示例

[B,BG,BP] = groupcounts(A,___) 还返回与 B 中的计数对应的组 BG 和百分比 BP

示例

全部折叠

计算表数据中组元素的数量。

创建一个表,其中包含五个人的信息。

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  

按性别统计每组中的元素数。

G1 = groupcounts(T,'Gender')
G1=2×3 table
     Gender     GroupCount    Percent
    ________    __________    _______

    "female"        2           40   
    "male"          3           60   

按性别和是否为吸烟者统计每组中的元素数。默认情况下,groupcounts 隐藏元素数为零的组,因此对于女性吸烟者或男性非吸烟者不会返回任何组。

G2 = groupcounts(T,{'Gender','Smoker'})
G2=2×4 table
     Gender     Smoker    GroupCount    Percent
    ________    ______    __________    _______

    "female"    false         2           40   
    "male"      true          3           60   

要统计所有组,包括那些元素数为零的组,请指定 'IncludeEmptyGroups' 参数及其值 true

G3 = groupcounts(T,{'Gender','Smoker'},'IncludeEmptyGroups',true)
G3=4×4 table
     Gender     Smoker    GroupCount    Percent
    ________    ______    __________    _______

    "female"    false         2           40   
    "female"    true          0            0   
    "male"      false         0            0   
    "male"      true          3           60   

根据指定的 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]';
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      

按售出的商品总量计算组计数,并将各组按商品总量分成 bin 区间。

G = groupcounts(TT,'TotalItemsSold',[0 4 8 12 16])
G=3×3 table
    disc_TotalItemsSold    GroupCount    Percent
    ___________________    __________    _______

         [4, 8)                3           30   
         [8, 12)               4           40   
         [12, 16]              3           30   

计算按星期几分组的组计数。

G = groupcounts(TT,'TimeStamps','dayname')
G=5×3 table
    dayname_TimeStamps    GroupCount    Percent
    __________________    __________    _______

        Tuesday               2           20   
        Wednesday             2           20   
        Thursday              1           10   
        Friday                2           20   
        Saturday              3           30   

确定向量中哪些元素出现多次。

创建一个值介于 1 和 5 之间的列向量。

v = [1 1 2 2 3 5 3 3 1 4]';

使用 groupcounts 确定向量中的唯一组,并对组成员进行计数。

[gc,grps] = groupcounts(v)
gc = 5×1

     3
     2
     3
     1
     1

grps = 5×1

     1
     2
     3
     4
     5

通过为计数大于 1 的组创建逻辑索引,确定向量中哪些元素出现多次。对组进行索引以返回重复的向量元素。

duplicates = grps(gc > 1)
duplicates = 3×1

     1
     2
     3

根据性别和是否为吸烟者计算四个组的组计数。

将患者信息存储为三种不同类型的向量。

Gender = ["male";"female";"male";"female";"male"];
Smoker = logical([1;0;1;0;1]);
Weight = [176;163;131;133;119];

按性别和是否吸烟分组,计算组计数。指定三个输出,以同时返回组 BG 和百分比 BPB 输出包含每个组的计数,BP 包含这些计数所表示的百分比。

[B,BG,BP] = groupcounts({Gender,Smoker},'IncludeEmptyGroups',true)
B = 4×1

     2
     0
     0
     3

BG=1×2 cell array
    {4x1 string}    {4x1 logical}

BP = 4×1

    40
     0
     0
    60

BG 是包含两个向量的元胞数组,按行查看向量中的元素即可找到对应组的描述。例如,BG{1} 的第一行表示第一组中的患者是女性,BG{2} 的第一行表示她们是非吸烟者。在 B 的对应行中可发现该组的计数为 2。

BG{1}
ans = 4x1 string
    "female"
    "female"
    "male"
    "male"

BG{2}
ans = 4x1 logical array

   0
   1
   0
   1

输入参数

全部折叠

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

输入向量,指定为表示分组向量的列向量、矩阵或列向量元胞数组。当 A 是矩阵时,分组向量是列向的。

分组变量或向量,指定为下表中的选项之一。对于表或时间表输入数据,groupvars 指示使用哪些变量来计算数据中的组。不会对 groupvars 未指定的其他变量进行操作,也不会将其传递到输出。

选项说明示例
变量名称

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

'Var1'

"Var1"

变量名称的向量

字符向量元胞数组或字符串数组,其中每个元素表示一个表变量名称

{'Var1' 'Var2'}

["Var1" "Var2"]

变量索引的标量或向量

表变量索引的标量或向量

1

[1 3 5]

逻辑向量

逻辑向量,每个元素分别对应一个表变量,其中 true 指示包括对应变量,false 指示不包括对应变量。

[true false true]

函数句柄

函数句柄,以表变量作为输入并返回逻辑标量

@isnumeric

vartype 下标

vartype 函数生成的表下标

vartype('numeric')

示例: groupcounts(T,"Var3")

分 bin 方案,指定为下列选项之一:

  • 'none',指示仅根据指定的分组变量返回组

  • bin 边界的列表,对于数值分组变量指定为数值向量,或对于 datetime 分组变量指定为 datetime 向量

  • bin 的数量,指定为整数标量

  • 持续时间,指定为 durationcalendarDuration 类型的标量,指示 bin 宽度(仅限于 datetimeduration 分组变量或向量)

  • 列出每个分组变量或向量的分 bin 规则的元胞数组

  • 时间 bin(仅适用于 datetimeduration 分组变量或向量),指定为下列字符向量之一:

    说明数据类型
    'second'

    每个 bin 是 1 秒。

    datetimeduration
    'minute'

    每个 bin 是 1 分钟。

    datetimeduration
    'hour'

    每个 bin 是 1 小时。

    datetimeduration
    'day'

    每个 bin 表示 1 个日历日。此值将夏令时变化考虑在内。

    datetimeduration
    'week'每个 bin 是 1 个日历周。仅限 datetime
    'month'每个 bin 是 1 个日历月。仅限 datetime
    'quarter'每个 bin 是 1 个日历季度。仅限 datetime
    'year'

    每个 bin 表示 1 个日历年。此值将闰日考虑在内。

    datetimeduration
    '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

如果指定多个分组变量或向量,则可以提供应用于所有分组变量的单个分 bin 规则,或者提供包含针对每个分组变量(例如 {'none',[0 2 4 Inf]})的分 bin 方法的元胞数组。

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: G = groupcounts(T,groupvars,groupbins,'IncludedEdge','right')

包括的 bin 边界,指定为 'left''right',指示包括 bin 区间的哪一边。

此名称-值对组只能在指定 groupbins 时指定,并且值适用于所有分组变量或向量的所有分 bin 方案。

缺失值组指示符,指定为数值或逻辑值 1 (true) 或 0 (false)。如果参数值为 true,则 groupcounts 显示由缺失值(例如 NaN)组成的组。如果参数值为 false,则 groupcounts 不显示缺失值组。

空组指示符,指定为数值或逻辑值 0 (false) 或 1 (true)。如果参数值为 false,则 groupcounts 不显示元素数为零的组。如果参数值为 true,则 groupcounts 显示空组。

输出参数

全部折叠

输出表,返回为一个表,其中包含计算的组、每个组中的元素数以及每个组计数表示的百分比。对于单个分组变量,输出组根据带 'sorted' 选项的 unique 函数返回的顺序进行排序。

非表输入数据的组计数,返回为一个列向量,其中包含每个组中的元素数。

非表输入数据的组,以列向量或列向量元胞数组形式返回。对于单个分组向量,输出组根据带 'sorted' 选项的 unique 函数返回的顺序进行排序。

当您提供多个输入向量时,BG 是包含相等长度的列向量的元胞数组。通过在 BG 的所有向量中按行查看元素,可以找到组信息。每组的计数包含在第一个输出参数 B 的对应行中。

非表输入数据的组计数百分比,返回为一个列向量,其中包含 B 中每个组计数所表示的百分比。百分比范围为 [0 100]

提示

  • 当多次调用 groupcounts 时,请考虑尽可能将分组变量转换为 categoricallogical 类型以提高性能。例如,如果您有 char 类型的分组变量(例如 Gender,其中元素为 'Male''Female'),您可以使用命令 categorical(Gender) 将其转换为分类变量。

兼容性考虑

全部展开

R2021a 中的行为有变化

扩展功能

在 R2019a 中推出