Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

groupcounts

分组元素的数量

说明

表数据

示例

G = groupcounts(T,groupvars) 返回表或时间表 T 中的唯一分组变量组合、每组中的成员数以及每组所占的数据百分比( 范围为 [0, 100])。组基于 groupvars 中各变量的行值划分,各组包含唯一值组合。输出表的每一行对应一个组。例如,G = groupcounts(T,"HealthStatus") 返回一个表,其中包含按变量 HealthStatus 分组的每个组的计数和百分比。

有关详细信息,请参阅组计数计算

示例

G = groupcounts(T,groupvars,groupbins) 指定在分组前根据分 bin 方案 groupbinsgroupvars 中的行进行分 bin。例如,G = groupcounts(T,"SaleDate","year") 根据分组变量 SaleDate 返回 T 中所有销售每一年的组计数和组百分比。

示例

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

数组数据

B = groupcounts(A) 返回向量、矩阵或元胞数组 A 中每组的成员数。组基于 A 中各列向量的行值划分,各组均包含唯一值组合。B 的每一行包含一个组的计数。

B = groupcounts(A,groupbins) 指定在分组前根据分 bin 方案 groupbins 对数据进行分 bin。

B = groupcounts(___,Name,Value) 使用一个或多个名称-值参量为上述任一输入数组语法指定其他分组属性。

示例

[B,BG,BP] = groupcounts(A,___) 返回其他组信息。BG 是与 B 中的行相对应的唯一分组向量组合。BPB 中每个组计数所表示的数据的百分比。百分比范围为 [0, 100]。

示例

全部折叠

基于表数据计算每个组中的元素数。

创建一个包含八个人信息的表 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  

根据健康状况对个人进行分组,并返回每组中的人数和百分比。

G1 = groupcounts(T,"HealthStatus")
G1=4×3 table
    HealthStatus    GroupCount    Percent
    ____________    __________    _______

     Excellent          2           25   
     Fair               2           25   
     Good               2           25   
     Poor               2           25   

按健康状况和是否吸烟对个人进行分组,并返回每组中的人数和百分比。默认情况下,groupcounts 会隐藏元素为零的组,因此不会返回分组变量值的某些唯一组合。

G2 = groupcounts(T,["HealthStatus","Smoker"])
G2=6×4 table
    HealthStatus    Smoker    GroupCount    Percent
    ____________    ______    __________    _______

     Excellent      false         1          12.5  
     Excellent      true          1          12.5  
     Fair           false         1          12.5  
     Fair           true          1          12.5  
     Good           false         2            25  
     Poor           true          2            25  

要为每个组返回一行,包括元素数为零的组,请将 IncludeEmptyGroups 指定为 true

G3 = groupcounts(T,["HealthStatus","Smoker"],"IncludeEmptyGroups",true)
G3=8×4 table
    HealthStatus    Smoker    GroupCount    Percent
    ____________    ______    __________    _______

     Excellent      false         1          12.5  
     Excellent      true          1          12.5  
     Fair           false         1          12.5  
     Fair           true          1          12.5  
     Good           false         2            25  
     Good           true          0             0  
     Poor           false         0             0  
     Poor           true          2            25  

根据指定的分 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 的组计数。

G = groupcounts(TT,"ItemsSold",[0 4 8 12 16])
G=3×3 table
    disc_ItemsSold    GroupCount    Percent
    ______________    __________    _______

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

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

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 之间的列向量。

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

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

[B,BG] = groupcounts(A)
B = 5×1

     3
     2
     3
     1
     1

BG = 5×1

     1
     2
     3
     4
     5

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

duplicates = BG(B > 1)
duplicates = 3×1

     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];

按健康状况和是否吸烟分组,计算组计数。指定三个输出,以同时返回组 BG 和组计数百分比 BP

BG 是包含两个向量的元胞数组,按行查看向量中的元素即可找到对应组的描述。例如,BG{1} 的第一行表示第一组中的人健康状况为 ExcellentBG{2} 的第一行表示他们不吸烟。最后,BP 包含 BG 中对应组的每个组中的成员数百分比。

[B,BG,BP] = groupcounts({HealthStatus,Smoker},"IncludeEmptyGroups",true);
B
B = 8×1

     1
     1
     1
     1
     2
     0
     0
     2

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

BP
BP = 8×1

   12.5000
   12.5000
   12.5000
   12.5000
   25.0000
         0
         0
   25.0000

输入参数

全部折叠

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

输入数组,指定为列向量、存储为矩阵的列向量组,或由列向量、字符行向量或矩阵组成的元胞数组。

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

索引方案示例

变量名称:

  • 字符串、字符向量或元胞数组

  • pattern 对象

  • "A"'A' - 名为 A 的变量

  • ["A","B"]{'A','B'} - 两个名为 AB 的变量

  • "Var"+digitsPattern(1) - 变量名为 "Var" 后跟一个数字

变量索引:

  • 引用变量在表中位置的索引编号

  • 由数字组成的向量

  • 逻辑向量。通常,此向量的长度与变量的数目相同,但可以省略尾部的 0false

  • 3 - 表中的第三个变量

  • [2 3] - 表中的第二个和第三个变量

  • [false false true] - 第三个变量

函数句柄:

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

  • @isnumeric - 所有包含数值的变量

变量类型:

  • vartype 下标,用于选择指定类型的变量

  • vartype("numeric") - 所有包含数值的变量

示例: groupcounts(T,"Var3")

分组变量或向量的分 bin 方案,指定为以下一种或多种分 bin 方法。要对所有分组变量或向量应用相同的分 bin 方法,请指定一种分 bin 方法。要对每个分组变量或向量应用不同的分 bin 方法,请指定一个由分 bin 方法组成的元胞数组,其中每个元胞包含对应分组变量或向量的分 bin 方法。

  • "none" - 无分 bin。

  • 由 bin 边界组成的向量 - bin 边界定义 bin。对于 datetime 分组变量或向量,可以将边界指定为数值或 datetime 值。

  • bin 数目 - 该数目确定要创建多少个等间距 bin。可以将 bin 数目指定为正整数标量。

  • 时间长度(bin 宽度)- 时间长度确定每个 bin 的宽度。对于 datetimeduration 分组变量或向量,可以将 bin 宽度指定为 durationcalendarDuration 标量。

  • 时间单位的名称(bin 宽度)- 时间单位的名称确定每个 bin 的宽度。对于 datetimeduration 分组变量或向量,可以将 bin 宽度指定为下表中的选项之一。

    描述数据类型
    "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

示例: G = groupcounts(T,"Var1",[-Inf 0 Inf])

示例: G = groupcounts(T,["Var1" "Var2"],{"none" "year"})

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

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

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

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

在分 bin 方案中包括 bin 边界,指定为 "left""right",指示包括 bin 区间的哪一边。

仅当指定了 groupbins 时,才能指定 IncludedEdge,并且该值适用于所有分组变量或向量的所有分 bin 方法。

指定是否将缺失值视为组的选项,指定为数值或逻辑值 1 (true) 或 0 (false)。如果 IncludeMissingGroupstrue,则 groupcounts 会将分组变量或向量中的缺失值(如 NaN)视为一个组。如果分组变量或向量没有缺失值,或如果 IncludeMissingGroupsfalse,则 groupcounts 不会将缺失值视为一个组。

指定是否在组计数运算中包括空组的选项,指定为数值或逻辑值 0 (false) 或 1 (true)。如果 IncludeEmptyGroupsfalse,则 groupcounts 忽略空组。如果 IncludeEmptyGroupstrue,则 groupcounts 包括空组。

在以下情况下会出现空组:

  • 分组变量或向量的可能值未在输入数据(例如在分类、逻辑或分 bin 数值变量或向量)中表示。例如,如果输入表中任一行的逻辑分组变量的值都不为 true,则 true 定义的是一个空组。

  • 分组变量或向量的唯一组合未在输入数据中表示。例如,如果输入表中任一行的分组变量 A 的值都不为 A1 且分组变量 B 的值都不为 B1,则 A1_B1 定义的是一个空组。

输出参量

全部折叠

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

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

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

对于多个输入向量,BG 是包含相等长度的列向量的元胞数组。每个组的信息包含在 BG 各个向量对应的行元素中。每组映射到输出数组 B 的对应行。

数组输入数据的组计数百分比,以列向量形式返回。BP 包含 B 中每个组在 [0, 100] 范围内的百分比。

详细信息

全部折叠

组计数计算

下表说明组计数的计算。

示例表 T语法示例生成的表

Input table containing categorical variable VarA and numeric variable VarB

groupcounts(T,"VarA")

Output table where the row names are the categories of VarA and the variables are the number and percentage of group members

groupcounts(T,["VarA" "VarB"],{"none",[-Inf 0 Inf]})

Output table where the row names are the combinations of categories of VarA and bins of VarB, and the variables are the number and percentage of group members

提示

  • 当多次调用 groupcounts 时,请考虑尽可能将分组变量转换为 categoricallogical 类型以提高性能。例如,如果您有字符串数组分组变量(例如 HealthStatus,其中元素为 "Poor""Fair""Good""Excellent"),您可以使用命令 categorical(HealthStatus) 将其转换为分类变量。

扩展功能

版本历史记录

在 R2019a 中推出

全部展开