主要内容

groupfilter

分组过滤

描述

例子

G= groupfilter (Tgroupvars方法中的计算对表或时间表中的数据进行过滤方法中指定的分组变量的唯一组合进行分组groupvars.的方法参数是对每个非分组变量进行操作的函数句柄。输出G表或时间表只包含行吗T满足的条件方法.例如,G = groupfilter(T,'Trial',@(x) number (x) > 5)将数据分组在T通过试验,保留属于多于五个试验的组的行。

例子

G= groupfilter (Tgroupvarsgroupbins方法对数据进行分类groupbins在应用筛选器之前,将组水平连接到输出表。例如,G = groupfilter(T,'SaleDate','year',@(x) number (x) > 5)将数据装入SaleDate,并保留bin中元素超过5个的行。

例子

G= groupfilter (___datavars为前一种语法指定要应用筛选器的表变量。例如,G = groupfilter (T,“审判”,@ x (x) = = max (x),“高”)保持T对应于每次试验的最大高度。

G= groupfilter (___“IncludedEdge”,LR指定包含的bin边为“左”“对”指示包含二进制间隔的哪一端。你可以使用IncludeEdge使用之前指定的任何语法groupbins

B= groupfilter (一个groupvars方法根据分组向量的唯一组合对数据进行过滤groupvars一个是一个向量或矩阵。groupvars可以是列向量、矩阵或列向量的单元格数组。输出B矩阵是否包含的行一个满足定义的条件方法

例子

B= groupfilter (一个groupvarsgroupbins方法对数据进行分类groupbins

B= groupfilter (一个groupvarsgroupbins方法“IncludedEdge”,LR指定是否在每个bin中包括左边或右边groupbins都是确定的。

例子

BBG= 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分类星期四星期三星期五星期六星期二

输入参数

全部折叠

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

输入数组,指定为向量或矩阵。

对变量或向量进行分组,指定为以下选项之一:

  • 对于数组输入,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将方法同时应用于多个非分组变量,则该方法必须返回真正的为了保持行。

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

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

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

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

此参数仅当groupbins且该值对所有分组变量或向量应用所有分组方案。

要操作的表变量,指定为此表中的选项之一。datavars指示要对输入表或时间表的哪些变量应用过滤方法。表中未指定的其他变量datavars在不被操作的情况下传递到输出。groupfilter将筛选方法应用于指定的变量,并使用结果从所有变量中删除行。当datavars未指定,groupfilter对每个非分组变量进行操作。

选项 描述 例子
变量名

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

“Var1”

“Var1”

变量名向量

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

{“Var1”“Var2”}

[" Var1”“Var2”)

变量指标的标量或向量

表变量索引的标量或向量

1

[1 3 5]

逻辑向量

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

[真真假假]

函数处理

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

@isnumeric

vartype下标

类生成的表下标vartype函数

vartype(数字)

例子:groupfilter(T,groupvars,method,["Var1" "Var2" "Var4"])

输出参数

全部折叠

输出表,作为包含未过滤数据行的表或时间表返回。

输出数组,作为包含未过滤数据的向量或矩阵返回。

数组输入数据的向量分组,返回为列向量或列向量的单元格数组。BG中未筛选的行对应的分组向量的行一个

扩展功能

版本历史

R2019b引入

全部展开