主要内容

unstack

将数据从单个变量解堆栈为多个变量

描述

例子

U= unstack (年代varivar转换表格或时间表,年代,到相应的表格或时间表,U,那是未堆叠的。var中的变量年代,每个变量都被分解成多个变量U.一般来说,U包含更多的变量,但行数较少年代

ivar参数Input指定变量年代unstack用作指示变量。中的值ivar确定哪些变量U包含从varunstacking之后。

unstack函数在表和时间表中以不同的方式处理其余变量。

  • 如果年代那是桌子吗unstack将其余变量处理为分组变量.分组变量中值的每个惟一组合标识中的一组行年代被拆成一排U

  • 如果年代那么,有时间表吗unstack丢弃剩余的变量。然而,unstack将行次数的向量作为分组变量。

不能解堆栈表的行名或时间表的行时间,也不能将它们指定为指示器变量。属性将行名或行时间指定为常量变量“ConstantVariables”论点。

U= unstack (年代varivar名称,值转换表格或时间表年代带有一个或多个指定的附加选项名称,值对参数。

例如,您可以指定如何操作unstack将变量从年代到变量U

例子

U= unstack(___也返回一个索引向量,,表示中行之间的对应关系U排在里面年代.您可以使用前面的任何输入参数。

例子

全部折叠

创建一个表,表明在不同的风暴在不同的城镇降雪量。属性指定城镇分类数组,因为这个表中有一组固定的城镇名称。

Storm = [3;3;1;3;1;1;4;2;4; 4;2];Town = categorical({“纳蒂克”“伍斯特”“纳蒂克”“波士顿”“波士顿”“伍斯特”...“波士顿”“纳蒂克”“伍斯特”“伍斯特”“纳蒂克”“波士顿”});降雪= [0;3;5;5;9;10;12;13;15;16;17;21];S = table(风暴,城镇,降雪)
S =12×3表风暴镇降雪_____ _________ ________ 3纳蒂克0 3伍斯特3 1纳蒂克5 3波士顿5 1波士顿9 1伍斯特10 4波士顿12 2纳蒂克13 4伍斯特15 2伍斯特16 4纳蒂克17 2波士顿21

年代包含每个风暴的三个降雪条目,每个城镇一个。年代是堆叠格式,与小镇分类数据类型。的表变量分类数据类型是有用的指示变量和分组变量。

分离变量降雪分成三个变量,每个变量对应一个城镇,小镇.输出表,U,为非堆叠格式。

U = unstack(S,“雪”“小镇”
U =4×4表风暴波士顿纳蒂克伍斯特_____ ______ ______ _________ 3 5 0 3 1 9 5 10 4 12 17 15 2 21 13 16

每一行U中包含行的数据年代它们在分组变量中有相同的值,风暴.中唯一值的顺序风暴确定数据的顺序U

将数据解堆栈,并对同一组中指示器变量中具有相同值的多行应用聚合函数。

创建一个包含两天内两只股票价格数据的时间表。要指定行时间,使用datetime值。指定股票的名称使用分类数组,因为这个时间表有一个固定的股票名称集。

日期= [repmat(datetime(“2008-04-12”)、6、1);...repmat (datetime (“2008-04-13”)、5、1)];股票=分类({“Stock1”“Stock2”“Stock1”“Stock2”...“Stock2”“Stock2”“Stock1”“Stock2”...“Stock2”“Stock1”“Stock2”});价格= [60.35;27.68;64.19;25.47;28.11;27.98;]...63.85; 27.55; 26.43; 65.73; 25.94);时间表(日期,存货,价格)
S =11×2时间表日期股票价格___________ ___________ 2008年4月12日股票1 60.35 2008年4月12日股票2 27.68 2008年4月12日股票1 64.19 2008年4月12日股票2 25.47 2008年4月12日股票2 28.11 2008年4月12日股票2 27.98 2008年4月13日股票1 63.85 2008年4月13日股票2 27.55 2008年4月13日股票2 26.43 2008年4月股票1 65.73 2008年4月13日股票2 25.94

年代包含以下两个价格Stock1在第一天和四个价格为Stock2在第一天。

为每只股票创建一个包含单独变量的时间表,为每一天创建一行。使用日期(行次数向量)作为分组变量,应用聚合函数,@mean,到变量的数值,价格,为每一组。

[U,is] = unstack(S,“价格”“股票”...“AggregationFunction”@mean)
U =2×2的时间表日期Stock1 Stock2  ___________ ______ ______ 12 - 4月- 2008 26.64 64.79 62.27 27.31 13 - 4月- 2008
是=2×11 7

U包含按日期分组的每个股票的平均价格。

为中每组行的第一个值标识索引年代.日期为2008年4月13日的组的第一个值位于第7行年代

输入参数

全部折叠

输入表,指定为表或时间表。年代必须包含数据变量才能解堆栈,var,和指示变量,ivar.中剩下的变量年代既可以看成分组变量,也可以看成常数变量。

变量年代解堆栈,指定为正整数、正整数的向量、字符向量、字符向量的单元格数组、字符串数组或逻辑向量。

指标变量年代,指定为正整数、字符向量或字符串标量。指定的变量中的值ivar指出在U包含从指定的变量中获取的元素var

指定的变量。ivar可以是数字向量、逻辑向量、字符数组、字符向量的单元格数组、字符串数组或分类向量。

名称-值参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:AggregationFunction, @mean应用聚合函数@mean的值var

将变量分组年代定义行组,指定为由逗号分隔的对组成“GroupingVariables”和正整数,正整数的向量,字符向量,字符向量的单元格数组,字符串数组,或者逻辑向量。每组行年代变成一行U

年代可以在第一个维度上有行标签。如果年代是表,则它可以用行名作为标签。如果年代是一个时间表,那么它必须有行时间作为标签。unstack可以将行标签视为分组变量。

  • 如果您没有指定“GroupingVariables”,年代那么,有时间表吗unstack将行时间作为分组变量处理。

  • 如果你指定“GroupingVariables”,年代有行名或行时间吗unstack不将它们视为分组变量,除非将它们包含在“GroupingVariables”

组内的变量常量,指定为逗号分隔的对,由“ConstantVariables”和正整数,正整数的向量,字符向量,字符向量的单元格数组,字符串数组,或者逻辑向量。

中这些变量的值U是从每组的第一行中取年代

的行名或行时间年代的值时“ConstantVariables”

中的新数据变量的名称U,指定为逗号分隔的对,由“NewDataVariableNames”一个单元格数组的字符向量或字符串数组。

如果您没有指定“NewDataVariableNames”,然后unstack中的新数据变量创建名称U所指定的指示符变量中的值ivar

中的值的聚合函数var到单个值,指定为逗号分隔的对,由“AggregationFunction”和一个函数句柄。unstack将此函数应用于中具有相同值的同一组中的行ivar.该函数必须将数据值聚合为单个值。

的值“AggregationFunction”,然后unstack根据数据类型使用不同的默认聚合函数。

  • 数字数据,默认聚合功能为总和

  • 非数字数据,默认聚合功能为独特的

如果没有要聚合的数据值,因为没有与给定指标值相对应的数据值ivar然后,在拆堆之后unstack必须填充未堆叠输出表中的空元素。这样的话,unstack以空数组作为输入调用聚合函数。价值是unstackfill in取决于聚合函数在输入为空数组时返回的内容。

无数据聚合时聚合函数返回值

插入到未堆叠表空元素中的值

聚合函数引发错误

unstack提出了误差。

空数组

适当数据类型的填充值(NaT"",等等)。

例子:如果聚合函数为独特的,它返回一个0乘0数组,然后unstack插入一个输入输出表。

标量值

从聚合函数返回的标量值。

例子:如果聚合函数为元素个数然后返回0,然后unstack插入一个0输入输出表。

向量、矩阵或多维数组

unstack提出了误差。

中的变量命名规则U,指定为逗号分隔的对,由“VariableNamingRule”要么是值“修改”“保存”

的价值“VariableNamingRule”为在输出表或时间表中命名变量指定以下规则。

的价值“VariableNamingRule”

规则

“修改”(默认)

修改从输入表或时间表中获取的名称,以便输出中的相应变量名称也是有效的MATLAB®标识符。

“保存”

保留从输入表或时间表中获取的原始名称。输出中对应的变量名可以是任何Unicode®字符,包括空格和非ascii字符。

注意:在某些情况下,unstack什么时候还要修改原名“保存”这是规则。这些情况包括:

  • 重复的名字

  • 与表维度名称冲突的名称

  • 与保留名冲突的名称。

  • 长度超过值的名称namelengthmax

输出参数

全部折叠

输出表,作为表或时间表返回。U包含未堆叠的数据变量、分组变量和来自任何常量变量的每组的第一个值。

数据的顺序U是基于分组变量中惟一值的顺序。

中可以存储其他元数据,如描述、变量单位、变量名和行名U.的属性部分,以获取更多信息表格时间表

索引年代,作为列向量返回。对于中的每一行U,指标向量,的对应行组中第一个值的索引年代

更多关于

全部折叠

分组变量

分组变量是用于对数据进行分组或分类的实用变量。分组变量对于按组总结或可视化数据非常有用。可以通过指定一个或多个分组变量在表中定义组。

分组变量可以是以下任意一个:

  • 分类向量

  • 字符向量的单元格数组

  • 字符串数组

  • 字符数组

  • 数字向量,通常包含正整数

  • 逻辑向量

具有相同分组变量值的行属于同一个组。如果使用多个分组变量,具有相同分组变量值组合的行属于同一组。

提示

  • 中可以指定多个数据变量年代,每个变量就变成了一组未堆叠的数据变量U.使用正整数的向量、包含多个变量名的单元格数组或字符串数组或要指定的逻辑向量var.一个指示器变量,由输入参数指定,ivar,适用于由指定的所有数据变量var

兼容性的考虑

全部展开

R2020a的行为发生了变化

R2020a的行为发生了变化

扩展功能

在R2013b中引入