groupfilter
分组过滤
语法
描述
例子
过滤双变量表
创建一个包含两个变量的表。
groupID = [1 1 1 2 2 3]';样本= [3 1 2 9 8 5]';T = table(groupID,sample)
T =6×2表groupID sample _______ ______ 1 3 1 1 1 2 2 9 2 8 3 5
按ID号分组,并只返回与具有两个以上样本的组对应的行。
Gnumel = groupfilter(T,“groupID”,@(x) number (x) > 2)
Gnumel =3×2表groupID sample _______ ______ 1 3 1 1 1 1 2
只返回组样本在0到6之间的行。
Gvals = groupfilter(T,“groupID”,@(x) min(x) > 0 && max(x) < 6)
Gvals =4×2表groupID sample _______ ______ 1 3 1 1 1 2 3
按最大值分组
创建一个包含表示天数和温度的两个变量的表。
Daynum = [1 1 1 2 2 2 2]';Temp = [67 65 71 55 61 79 58 78]';T =表(daynum,temp)
T =8×2表Daynum temp ______ ____ 1 67 1 65 1 71 1 55 2 61 2 79 2 58 2 78
按天数分组,并返回每天最大的两个温度。
G = groupfilter(T,“daynum”@ (x) ismember (x, maxk (x, 2)))
G =4×2表Daynum temp ______ ____ 1 67 1 71 2 79 2 78
按月分组
创建一个日期和相应利润的表格。
timeStamps = datetime([2017 3 4;2017 3 2;2017 3 15;2017 4 10;...2017 4 14;2017 4 30;2017 5 25;...2017 5 29;2017 5 21]);利润= [2032 3071 1185 2587 1998 2899 3112 909 2619]';T = table(时间戳,利润)
T =9×2表时间戳利润___________ ______ 04- 03 -2017 2032 02- 03 -2017 3071 15- 03 -2017 1185 10- april -2017 2587 14- april -2017 1998 30- april -2017 2899 25-May-2017 3112 29-May-2017 909 21-May-2017 2619
将日期按月份分组,并只返回与该月最大利润对应的行。
Gmax = groupfilter(T,“时间戳”,“月”,@(x) x == max(x))
Gmax =3×3表timeStamps利润month_timeStamps ___________ ______ ________________ 02-Mar-2017 3071 Mar-2017 30- april -2017 2899 april -2017 25-May-2017 3112 May-2017
返回每月平均利润大于2300美元的行。
Gavg = groupfilter(T,“时间戳”,“月”,@(x) mean(x) > 2300)
Gavg =3×3表timeStamps利润month_timeStamps ___________ ______ ________________ 10- april -2017 2587 april -2017 14- april -2017 1998 april -2017 30- april -2017 2899 april -2017
过滤三变量表
创建一个包含三个变量的表。
groupID = [1 2 3 1 2 3 1 2 3]';Height = [62 61 59 66 70 72 57 67 71]';性别= [“M”“F”“F”“M”“M”“F”“M”“M”“M”]“;T = table(groupID,身高,性别)
T =9×3表groupID高度性别_______ ______ ______ 1 62 "M" 2 61 "F" 3 59 "F" 1 66 "M" 2 70 "M" 3 72 "F" 1 57 "M" 2 67 "M" 3 71 "M"
根据ID号分组,并返回组成员的最低高度都为60的行。
G1 = groupfilter(T,“groupID”,@(x) min(x) >= 60,“高度”)
G1 =3×3表groupID高度性别 _______ ______ ______ 61“F”70“M”67“M”
返回组成员均为男性的行。
G2 = groupfilter(T,“groupID”,@(x) all(x ==“M”),“性别”)
G2 =3×3表groupID高度性别 _______ ______ ______ 62“M”66“M”1 57“M”
按ID号和性别分组,并返回每个组中包含男性和女性最大身高的行。
G3 = groupfilter(T,{“groupID”,“性别”},@(x) x == max(x))
G3 =5×3表groupID高度性别 _______ ______ ______ 61“F”66“M”70“M”71“M”72“F”3
矢量数据滤波
创建日期向量和相应利润值向量。
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]);利润= [2032 3071 1185 2587 1998 2899 3112 909 2619 3085]';
分组,并计算每个组的最大利润。显示最大利润及其对应的组。
[maxDailyProfit,dayOfWeek] = groupfilter(利润,时间戳,...“dayname”,@(x) x == max(x))
maxDailyProfit =5×13071 1185 2899 3112 2619
dayOfWeek =5 x1分类星期四星期三星期五星期六星期二
输入参数
T
- - - - - -输入数据
表格|时间表
输入数据,指定为表格或时间表。
一个
- - - - - -输入数组
向量|矩阵
输入数组,指定为向量或矩阵。
groupvars
- - - - - -将变量或向量分组
标量|向量|矩阵|单元阵列|函数处理|表格vartype
下标
对变量或向量进行分组,指定为以下选项之一:
对于数组输入,
groupvars
可以是行数相同的列向量一个
或排列在矩阵或单元格数组中的一组列向量。对于表格或时间表输入数据,
groupvars
指示使用哪些变量来计算数据中的组。您可以使用此表中的任何选项指定分组变量。选项 描述 例子 变量名 指定单个表变量名的字符向量或标量字符串
“Var1”
“Var1”
变量名向量 由字符向量或字符串数组组成的单元格数组,其中每个元素都是表变量名
{“Var1”“Var2”}
[" Var1”“Var2”)
变量指标的标量或向量 表变量索引的标量或向量
1
[1 3 5]
逻辑向量 一种逻辑向量,其每个元素对应于一个表变量,其中
真正的
包括相应的变量和假
不包括它[真真假假]
函数处理 接受表变量作为输入并返回逻辑标量的函数句柄
@isnumeric
vartype
下标类生成的表下标
vartype
函数vartype(数字)
例子:groupfilter (T“Var3”方法)
方法
- - - - - -计算方法
函数处理
计算方法,指定为函数句柄。
方法
定义用于从每个组中过滤成员的函数。该函数必须返回一个逻辑标量或逻辑列向量,其行数与指示选择哪个组成员的输入数据相同。如果函数返回逻辑标量,则过滤掉该组的所有成员(当值为假
)或不过滤(当值为真正的
).如果函数返回逻辑向量,则当对应的元素为时,将过滤出组的成员假
.当对应的元素为时,则保留成员真正的
.
要定义函数句柄,请使用表单的语法@ myfunc (inputargs)
在哪里myfunc
取决于inputargs
.例如,@ (x)的意思是(x)
指定变量x
类的输入参数的意思是
函数。然后可以定义筛选的条件,例如@(x) mean(x) >
,它返回一个逻辑标量。该计算保留组的平均值大于10的行。有关更多信息,请参见创建函数句柄而且匿名函数.
当groupfilter
将方法同时应用于多个非分组变量,则该方法必须返回真正的
为了保持行。
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]}
.
LR
- - - - - -包含箱边
“左”
(默认)|“对”
包含的bin边,指定为任意一个“左”
或“对”
,表示包含bin间隔的哪一端。
此参数仅当groupbins
且该值对所有分组变量或向量应用所有分组方案。
datavars
- - - - - -要操作的表变量
标量|向量|单元阵列|函数处理|表格vartype
下标
要操作的表变量,指定为此表中的选项之一。datavars
指示要对输入表或时间表的哪些变量应用过滤方法。表中未指定的其他变量datavars
在不被操作的情况下传递到输出。groupfilter
将筛选方法应用于指定的变量,并使用结果从所有变量中删除行。当datavars
未指定,groupfilter
对每个非分组变量进行操作。
选项 | 描述 | 例子 |
---|---|---|
变量名 | 指定单个表变量名的字符向量或标量字符串 |
|
变量名向量 | 由字符向量或字符串数组组成的单元格数组,其中每个元素都是表变量名 |
|
变量指标的标量或向量 | 表变量索引的标量或向量 |
|
逻辑向量 | 一种逻辑向量,其每个元素对应于一个表变量,其中 |
|
函数处理 | 接受表变量作为输入并返回逻辑标量的函数句柄 |
|
vartype 下标 |
类生成的表下标 |
|
例子:groupfilter(T,groupvars,method,["Var1" "Var2" "Var4"])
输出参数
G
-输出表
表|时间表
输出表,作为包含未过滤数据行的表或时间表返回。
B
-输出数组
向量|矩阵
输出数组,作为包含未过滤数据的向量或矩阵返回。
BG
-向量分组
列向量|单元格列向量数组
数组输入数据的向量分组,返回为列向量或列向量的单元格数组。BG
中未筛选的行对应的分组向量的行一个
.
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
使用注意事项和限制:
如果
一个
而且groupvars
都是高矩阵,那么它们必须有相同的行数。如果第一个输入是一个高矩阵,那么
groupvars
可以是包含高分组向量的单元格数组。的
groupvars
而且datavars
参数不支持函数句柄。金宝app的
方法
参数必须是的有效输入splitapply
在高阵列上操作。当按离散的datetime数组分组时,分类组名称与内存中的不同
groupfilter
计算。
有关更多信息,请参见高大的数组.
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
版本历史
R2019b引入R2022a:在较小的团队规模下提高性能
的groupfilter
函数显示了改进的性能,特别是当每组中的数据计数较小时。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。