主要内容

groupfilter

分组过滤

自从R2019b

描述

表数据

例子

G= groupfilter (Tgroupvars方法返回表或时间表的行T中指定的分组筛选条件方法.过滤条件方法应用于每个非分组变量的函数句柄。中的变量中的行定义组groupvars它们有着相同的独特的值组合。例如,G = groupfilter(T,"Trial",@(x) number (x) > 5)将数据分组在T通过试验,并保留属于多于5个试验的组的行。

例子

G= groupfilter (Tgroupvarsgroupbins方法指定bin中的行groupvars根据分箱方案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它们有着相同的独特的值组合。

例子

B= groupfilter (一个groupvarsgroupbins方法指定bin中的行groupvars根据分箱方案groupbins在分组之前。

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

例子

BBG= groupfilter(一个___还返回与中的行对应的惟一分组向量组合B

例子

全部折叠

创建一个包含两个变量的表。

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

创建表T其中包含9个人的信息。

groupID = [1 2 3 1 2 3 1 2 3]';Height = [62 61 59 66 70 72 57 67 71]';健康状态=分类([“穷”“好”“公平”“穷”“公平”“优秀”“穷”“优秀”“公平”]);T = table(groupID,Height,HealthStatus)
T =9×3表groupID Height HealthStatus _______ ______ ____________ 1 62 Poor 2 61 Good 3 59 Fair 1 66 Poor 2 70 Fair 3 72 Excellent 1 57 Poor 2 67 Excellent 3 71 Fair

根据ID号分组,并返回仅包含最低高度为60的成员的组的行。

G1 = groupfilter(T,“groupID”,@(x) min(x) >= 60,“高度”
G1 =3×3表groupID Height HealthStatus _______ ______ ____________ 2 61 Good 2 70 Fair 2 67 Excellent

按ID号分组,并返回仅包含健康状况状态为的成员的组的行可怜的

G2 = groupfilter(T,“groupID”,@(x) all(x ==“穷”),“HealthStatus”
G2 =3×3表groupID Height HealthStatus _______ ______ ____________ 1 62 Poor 1 66 Poor 1 57 Poor

创建日期向量和相应利润值向量。

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指示使用哪些变量来计算数据中的组。您可以使用此表中的任何选项指定分组变量。

    索引方案 例子

    变量名:

    • 字符串、字符向量或单元格数组

    • 一个模式对象

    • “一个”“一个”—变量名为一个

    • (“A”、“B”){' A ', ' B '}-两个变量命名为一个而且B

    • “Var”+ digitsPattern (1)—变量名为“Var”后面跟着一个数字

    变量指数:

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

    • 一个数字向量

    • 一个逻辑向量。通常,这个向量的长度与变量的数量相同,但可以省略尾随0

    • 3.-表中的第三个变量

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

    • [假假真]-第三个变量

    功能处理:

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

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

    变量类型:

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

    • vartype(数字)—所有包含数值的变量

例子:groupfilter (T“Var3”方法)

过滤方法,指定为函数句柄。

方法定义用于从每个组中过滤成员的函数。该函数必须返回一个逻辑标量或逻辑列向量,其行数与指示选择哪个组成员的输入数据相同。

  • 如果函数返回逻辑标量,则过滤掉该组的所有成员(当值为)或不过滤(当值为真正的).

  • 如果函数返回逻辑向量,则当对应的元素为时,将过滤出组的成员,当对应的元素为时,则保留成员真正的

要定义函数句柄,请使用表单的语法@ mymethod (inputargs),在那里mymethod取决于inputargs

  • 函数可以过滤符合条件的组对应的行。例如,@(x) mean(x) >只将组的平均值大于10的组对应的行传递给输出。

  • 函数可以在相应的组中筛选满足条件的行。例如,@(x) x == max(x)仅传递给输出与其组中行的最大值相对应的行。

有关更多信息,请参见创建函数句柄而且匿名函数

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” bin是完整的日期名称,例如“星期天” 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]}

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

索引方案 例子

变量名:

  • 字符串、字符向量或单元格数组

  • 一个模式对象

  • “一个”“一个”—变量名为一个

  • (“A”、“B”){' A ', ' B '}-两个变量命名为一个而且B

  • “Var”+ digitsPattern (1)—变量名为“Var”后面跟着一个数字

变量指数:

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

  • 一个数字向量

  • 一个逻辑向量。通常,这个向量的长度与变量的数量相同,但可以省略尾随0

  • 3.-表中的第三个变量

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

  • [假假真]-第三个变量

功能处理:

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

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

变量类型:

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

  • vartype(数字)—所有包含数值的变量

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

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

此参数仅当groupbins指定后,该值应用于所有分组变量或向量的所有分组方案。

输出参数

全部折叠

输出表用于表或时间表输入数据,作为表或时间表返回。G中的行T满足分组过滤方法。

用于数组输入数据的输出数组,作为向量或矩阵返回。B中的行一个满足分组过滤方法。

数组输入数据的向量分组,返回为列向量或列向量的单元格数组。BG中的行对应的唯一分组向量或分组向量组合B

扩展功能

版本历史

R2019b引入

全部展开