主要内容

grouptransform

按组转换

描述

表数据

G= grouptransform (Tgroupvars方法返回转换后的数据,以代替表或时间表中的非分组变量T.分组计算方法应用于每个非分组变量。中的变量中的行定义组groupvars它们有着相同的独特的值组合。例如,G = grouptransform(T,"HealthStatus","norm")中的数据规范化T使用2标准的健康状态。

例子

G= grouptransform (Tgroupvarsgroupbins方法指定bin中的行groupvars根据分箱方案groupbins在分组并将箱子作为附加变量附加到输出表之前。例如,G = grouptransform(T,"SaleDate","year","rescale")按销售年份分类,并按比例计算数据T到范围[0,1]。

G= grouptransform (___datavars为前一种语法指定要应用该方法的表变量。

例子

G= grouptransform (___名称,值为任何前面的语法使用一个或多个名称-值参数指定其他属性。例如,G = grouptransform(T,"Temp","linearfill","ReplaceValues",false)的附加变量追加填充的数据T而不是替换非分组变量。

数组的数据

B= grouptransform (一个groupvars方法返回转换后的数据,替换输入向量或矩阵中的列向量一个.分组计算方法适用于中的所有列向量一个.中的列向量中的行定义组groupvars它们有着相同的独特的值组合。

例子

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

B= grouptransform (___名称,值为输入数组的前一种语法使用一个或多个名称-值参数指定其他属性。

例子

BBG= grouptransform(一个___还返回与中的行对应的分组向量或分组向量的值B

例子

全部折叠

创建一个时间表,其中包含三个团队的进度状态。

timeStamp = days([1 1 1 2 2 2 3 3 3]');teamNumber = [1 2 3 1 2 3 1 2 3]';percentComplete = [14.2 28.1 11.5 NaN NaN 19.3 46.1 51.2 30.3]';T =时间表(timeStamp,teamNumber,percentComplete)
T =9×2时间表timeStamp teamNumber percentComplete _________ __________ _______________ 1 day 1 14.2 1 day 2 28.1 1 day 3 11.5 2天1 NaN 2天2 NaN 2天3 19.3 3天1 46.1 3天2 51.2 3天3 30.3

填写缺失状态百分比,用,为每个团队使用线性插值。

G = grouptransform(T,“teamNumber”“linearfill”“percentComplete”
G =9×2时间表timeStamp teamNumber percentComplete _________ __________ _______________ 1 day 1 14.2 1 day 2 28.1 1 day 3 11.5 2天1 30.15 2天2 39.65 2天3 19.3 3天1 46.1 3天2 51.2 3天3 30.3

将填充的数据附加到原始表中,而不是替换percentComplete变量,使用ReplaceValues

Gappend = grouptransform(T,“teamNumber”“linearfill”“percentComplete”“ReplaceValues”假)
Gappend =9×3的时间表timeStamp teamNumber percentComplete linearfill_percentComplete ___________________ _______________ __________________________ 1 day 1 14.2 14.2 1 day 2 28.1 28.1 1 day 3 11.5 11.5 2天1 NaN 30.15 2天2 NaN 39.65 2天3 19.3 19.3 3天1 46.1 46.1 3天2 51.2 51.2 3天3 30.3 30.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]';T = table(时间戳,利润)
T =10×2表时间戳利润___________ ______ 04- 03 -2017 2032 02- 03 -2017 3071 15- 03 -2017 1185 10- 03 -2017 2587 14- 03 -2017 1998 31- 03 -2017 2899 25- 03 -2017 3112 29- 03 -2017 909 21- 03 -2017 2619 18- 03 -2017 3085

按日名称分箱,使用2规范将利润规范化。

G = grouptransform(T,“时间戳”“dayname”“规范”
G =10×3表timeStamps profit dayname_timeStamps __________________ __________________ 04-Mar-2017 0.42069周六02-Mar-2017 1周四15-Mar-2017 0.79344周三10-Mar-2017 0.66582周五14-Mar-2017 0.60654周二31-Mar-2017 0.74612周五25-Mar-2017 0.64428周六29-Mar-2017 0.60864周三21-Mar-2017 0.79506周二18-Mar-2017 0.63869周六

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

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

按日名称分箱,使用2规范将利润规范化。显示转换后的数据及其对应的组。

[normDailyProfit,dayName] = grouptransform(利润,时间戳,“dayname”“规范”
normDailyProfit =10×10.4207 1.0000 0.7934 0.6658 0.6065 0.7461 0.6443 0.6086 0.7951 0.6387
dayName =10 x1分类星期六星期四星期三星期五星期二星期五星期六星期三星期二星期六

输入参数

全部折叠

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

输入数组,指定为列向量或存储为矩阵的列向量组。

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

  • 对于数组输入数据,groupvars可以是行数相同的列向量一个或排列在矩阵或单元数组中的一组列向量。

  • 对于表格或时间表输入数据,groupvars指示使用哪些变量来计算数据中的组。您可以使用此表中的任何选项指定分组变量。

    选项 描述 例子
    变量名

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

    “Var1”

    “Var1”

    变量名向量

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

    {“Var1”“Var2”}

    [" Var1”“Var2”)

    变量指标的标量或向量

    表变量索引的标量或向量

    1

    [1 3 5]

    逻辑向量

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

    [真真假假]

    函数处理

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

    @isnumeric

    vartype下标

    类生成的表下标vartype函数

    vartype(数字)

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

转换方法,指定为以下值之一:

方法

描述

“zscore”

将数据归一化,均值为0,标准差为1

“规范”

用2范数规范化数据

“meancenter”

将数据归一化,使其均值为0

“重新调节”

重新缩放范围到[0,1]

“meanfill”

用组数据的平均值填充缺失的值

“linearfill”

通过非缺失组数据的线性插值来填充缺失值

您还可以指定一个函数句柄,该句柄返回一个数组,该数组的第一个维度的长度为1,或者与输入数据的行数相同。如果函数返回一个一维长度为1的数组,则grouptransform重复该值,使输出的行数与输入的行数相同。

数据类型:字符|字符串|function_handle

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

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

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

要操作的表变量,指定为此表中的选项之一。datavars指示要将方法应用于输入表或时间表的哪些变量。未指定的其他变量datavars在不被操作的情况下传递到输出。当datavars未指定,grouptransform对每个非分组变量进行操作。

选项 描述 例子
变量名

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

“Var1”

“Var1”

变量名向量

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

{“Var1”“Var2”}

[" Var1”“Var2”)

变量指标的标量或向量

表变量索引的标量或向量

1

[1 3 5]

逻辑向量

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

[真真假假]

函数处理

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

@isnumeric

vartype下标

类生成的表下标vartype函数

vartype(数字)

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

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

例子:G = grouptransform(T,groupvars,groupbin,"zscore",IncludedEdge="right")

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:G = grouptransform(T,groupvars,groupbin,"zscore","IncludedEdge","right")

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

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

替换值指示符,指定为以下值之一:

  • 真正的1—将输入数据中的非分组表变量或列向量替换为包含转换后数据的表变量或列向量。

  • 0-将包含转换后数据的表变量或列向量附加到输入数据。

输出参数

全部折叠

输出表用于表或时间表输入数据,作为表或时间表返回。G包含每个组转换后的数据。

用于数组输入数据的输出数组,作为向量或矩阵返回。B在非分组向量的位置包含转换后的数据。

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

提示

  • 当打许多电话给grouptransform,考虑将分组变量转换为类型分类逻辑在可能的情况下提高性能。例如,如果您有一个字符串数组分组变量(如HealthStatus与元素“穷”“公平”“好”,“优秀”),您可以使用命令将其转换为类别变量分类(HealthStatus)

扩展功能

版本历史

在R2018b中引入

全部展开