groupcounts
语法
说明
表数据
使用一个或多个名称-值参数为上述语法指定其他分组属性。例如,G
= groupcounts(___,Name,Value
)G = groupcounts(T,"Category1","IncludeMissingGroups",false)
将排除由 Category1
中的 <undefined>
所指示的 categorical
类型的缺失数据构成的组。
示例
对表变量分组
基于表数据计算每个组中的元素数。
创建一个包含八个人信息的表 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
根据指定的分 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}
的第一行表示第一组中的人健康状况为 Excellent
,BG{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
输入参数
T
— 输入表
表 | 时间表
输入表,指定为表或时间表。
A
— 输入数组
列向量 | 矩阵 | 元胞数组
输入数组,指定为列向量、存储为矩阵的列向量组,或由列向量、字符行向量或矩阵组成的元胞数组。
groupvars
— 分组变量或向量
标量 | 向量 | 矩阵 | 元胞数组 | 模式 | 函数句柄 | 表 vartype
下标
分组变量或向量,指定为下表中的选项之一。对于表或时间表输入数据,groupvars
指示使用哪些变量来计算数据中的组。不会对 groupvars
未指定的其他变量进行操作,也不会将其传递到输出。
索引方案 | 示例 |
---|---|
变量名称:
|
|
变量索引:
|
|
函数句柄:
|
|
变量类型:
|
|
示例: groupcounts(T,"Var3")
groupbins
— 分 bin 方案
"none"
(默认) | 标量 | 向量 | 元胞数组
分 bin 方案,指定为以下选项之一:
"none"
,表示不分 binbin 边界列表,指定为数值向量,或
datetime
分组变量或向量的datetime
向量bin 数量,指定为正整数标量
持续时间,指定为
duration
或calendarDuration
类型的标量,指示 bin 的宽度(仅限于datetime
或duration
分组变量或向量)列出每个分组变量或向量的分 bin 方法的元胞数组
时间 bin(仅适用于
datetime
和duration
分组变量或向量),指定为下列字符串之一。值 描述 数据类型 "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
如果指定多个分组变量或向量,则可以提供应用于所有分组变量或向量的单个分 bin 方法,或者提供包含针对每个分组变量或向量(例如 {"none",[0 2 4 Inf]}
)的分 bin 方法的元胞数组。
名称-值参数
将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参数名称,Value
是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。
示例: G = groupcounts(T,groupvars,groupbins,IncludedEdge="right")
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: G = groupcounts(T,groupvars,groupbins,"IncludedEdge","right")
IncludedEdge
— 包括的 bin 边界
"left"
(默认) | "right"
包括的 bin 边界,指定为 "left"
或 "right"
,指示包括 bin 区间的哪一边。
要指定名称-值参数,必须先指定 groupbins
,且参数的值适用于所有分组变量或向量的所有分 bin 方案。
IncludeMissingGroups
— 缺失组指示符
true
或 1
(默认) | false
或 0
缺失值组指示符,指定为数值或逻辑值 1
(true
) 或 0
(false
)。当 IncludeMissingGroups
的值为 true
时,groupcounts
显示由缺失值(例如 NaN
)组成的组。当 IncludeMissingGroups
的值为 false
时,groupcounts
不显示缺失值组。
IncludeEmptyGroups
— 空组指示符
false
或 0
(默认) | true
或 1
空组指示符,指定为数值或逻辑值 0
(false
) 或 1
(true
)。当 IncludeEmptyGroups
的值为 false
时,groupcounts
不显示元素数为零的组。当 IncludeEmptyGroups
的值为 true
时,groupcounts
显示空组。
输出参数
G
— 输出表
表
表或时间表输入数据的输出表,返回为一个表。G
包含计算的组、每个组中的元素数以及每个组计数表示的百分比。对于单个分组变量,输出组根据带 "sorted"
选项的 unique
函数返回的顺序进行排序。
B
— 组计数
列向量
数组输入数据的组计数,返回为一个列向量,B
中包含每个组中的元素数。
BG
— 组
列向量 | 列向量元胞数组
数组输入数据的组,以列向量或列向量元胞数组形式返回。对于单个分组向量,输出组根据带 "sorted"
选项的 unique
函数返回的顺序进行排序。
对于多个输入向量,BG
是包含相等长度的列向量的元胞数组。每个组的信息包含在 BG
各个向量对应的行元素中。每组映射到输出数组 B
的对应行。
BP
— 组计数百分比
列向量
数组输入数据的组计数百分比,以列向量形式返回。BP
包含 B
中每个组在 [0, 100]
范围内的百分比。
提示
当多次调用
groupcounts
时,请考虑尽可能将分组变量转换为categorical
或logical
类型以提高性能。例如,如果您有字符串数组分组变量(例如HealthStatus
,其中元素为"Poor"
、"Fair"
、"Good"
和"Excellent"
),您可以使用命令categorical(HealthStatus)
将其转换为分类变量。
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
用法说明和限制:
第一个输入参数不支持元胞数组。
groupvars
参数不支持函数句柄。不支持
IncludeEmptyGroups
名称-值参数。组的顺序可能不同于内存中的
groupcounts
计算结果。按照离散的日期时间数组分组时,分类组名称将不同于内存中的
groupcounts
计算结果。
有关详细信息,请参阅 tall 数组。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
除输入数据之外的所有输入参数都必须为常量。
不支持稀疏输入。
日期时间或持续时间数据不支持分 bin 方案。
如果组变量的数目可以在运行时更改,则第二个输出
BG
是元胞数组。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2019a 中推出R2022a: 代码生成支持
为 groupcounts
函数生成 C 或 C++ 代码。有关用法说明和限制,请参阅 C/C++ 代码生成。
R2021a: table
输出中自动包含的百分比
当 groupcounts
对表或时间表中的数据进行操作时,输出包含一个表示百分比的额外表变量。百分比的范围为 [0, 100]
,包含在表变量 Percent
中。
任何引用特定表变量的代码都不受影响。但是,您可能需要根据输出表中的变量数目来更新代码。
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)