主要内容

rows2vars

调整表格或时间表的方向,使行成为变量

描述

例子

T2 = rows2vars (T1)重新确定行的方向T1,以便它们成为输出表中的变量T2,如图所示。如果rows2vars可以连接的行的内容T1,然后是T2是数组。否则,变量T2是单元阵列。rows2vars但总是返回一个表T1可以是桌子或时间表。

rows2vars函数复制的变量名T1一个新的变量T2. 如果T1具有行名称或行时间,则这些名称或时间将成为T2否则rows2vars生成名称Var1,…,VarN作为T2

例子

T2 = rows2vars (T1名称,值)使用一个或多个名称-值对参数指定附加参数。例如,你可以使用“VariableNamesSource”名称-值对参数,用于指定变量名的源T2

例子

全部折叠

创建表,然后将其行重新定向为新表中的变量。

从数据库加载数据数组patients.mat文件创建一个包含姓氏性别年龄身高重量变量。

负载患者T1 =表(LastName、性别、年龄、身高、体重);头(T1, 3)
ans=3×5表姓氏性别年龄身高体重{uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

将T1的行重新定位为输出表的变量。

T2=行2vars(T1);

显示变量的前四个变量T2.的第一个变量T2包含的变量的名称T1.其余的变量T2对应于一行行T1.自T1没有任何行标签,变量为T2有默认的名字,Var1瓦恩N变量。

T2(:,1:4)
ans=5×4表OriginalVariableNames Var1 Var2 Var3  _____________________ _________ ___________ ____________ {' 姓‘}{“史密斯”}{“约翰逊”}{威廉姆斯的}{‘性别’}{‘男性’}{‘男性’}{‘女性’}{‘年龄’}{[38]}{[43]}{[38]}{“高度”}{[71]}{[69]}{[64]}{“重量”}{[176]}{[163]}{[131]}

创建一个具有行名的表。如果一个表有行名,那么rows2vars将行名称转换为变量名称。

T3=表(性别、年龄、身高、体重、,“RowNames”,姓氏);水头(T3,3)
ans=3×4表性别年龄身高体重38 71 176约翰逊43 69 163威廉姆斯38 64 131

重新确定行的方向T3

T4 = rows2vars (T3);T4 (: 1:4)
ans=4×4表本周的阿尔瓦瓦利门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门{[163]}{[131]}

加载时间表并显示它。

负载波士顿波士顿
波士顿=6×3的时间表时间温度风速雨___________________ _________________ 2016-06-09 06:03:00 59.5 0.1 0.05 2016-06-09 12:00:23 63 2.3 0.08 2016-06-09 18:02:57 61.7 3.1 0.13 2016-06-10 06:01:47 55.4 5.7 0.15 2016-06-10 12:06:00 62.3 2.6 0.87 2016-06-10 18:02:57 58.8 6.2 0.33

重新定向,使其行成为输出中的变量rows2vars函数将行时间转换为名称,但对其进行修改,使其成为有效的变量名rows2vars始终是一个表,即使输入参数是时间表。

T = rows2vars(波士顿)
警告:已修改不是有效MATLAB标识符的表变量名称。由于表变量名必须是唯一的,因此与新标识符匹配的任何表变量名也都已修改。要将原始行名称用作新变量名称,请将“PreserveVariableNames”设置为true。
T=表3×7本研究中的一个研究结果是一场两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两研究UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU{'Temp'}59.56361.755.462.358.8{'WindSpeed'}0.1 2.3 3.1 5.7 2.6 6.2{'Rain'}0.05 0.08 0.13 0.15 0.87 0.33

从R2020a开始,您可以从输入表或时间表中获取名称,并将其用作输出表中的变量名称,无需修改。要保留原始名称,请使用“VariableNamingRule”名称-值对的论点。

加载时间表并显示它。

负载波士顿波士顿
波士顿=6×3的时间表时间温度风速雨___________________ _________________ 2016-06-09 06:03:00 59.5 0.1 0.05 2016-06-09 12:00:23 63 2.3 0.08 2016-06-09 18:02:57 61.7 3.1 0.13 2016-06-10 06:01:47 55.4 5.7 0.15 2016-06-10 12:06:00 62.3 2.6 0.87 2016-06-10 18:02:57 58.8 6.2 0.33

重新调整时间表的方向,使其行时间成为输出表中的变量名日期时间值设置为字符串,并使用“VariableNamingRule”名称-值对。

T = rows2vars(波士顿,“VariableNamingRule”“保存”)
T=表3×7据研究发现,一个科学家的研究结果是:2016-06-09-06-09-06-06-06-06-06-06-06-10-06:01:17-10-10-06-10-10-06:01:10-10-10-10 10-10-10-10-10-10-10-10-10-06-06-06-06-06-06-06-06-06-06-06-06-06-06-06-06-06-06-06-06-06-06-06-06-06-10-10-10-10-10-10-10-10-10-10-10-10-10-10-06:06:06:06:06:06:06:06:06:06:06:06:06:00 2016-2016-2016-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10 10 10-10 10 10 Uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu0.1 2.3 3.1 5.7 2.6 6.2{'Rain'}0.05 0.08 0.13 0.15 0.87 0.33

中的变量名T不是有效的MATLAB标识符,因为日期以数字开头。但是,您可以使用点符号来引用这些变量,使用括号。

t ('2016-06-09 06:03:00')
ans =3×159.5000 0.1000 0.0500

从电子表格中读取数据到表中。显示前三行。

T1 = readtable (“patients.xls”);头部(T1,3)
ans=3×10表UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu69 163 false 109 77{'Fair'}{'Williams'}{'Femal'}38{'St.Mary's Medical Center'}64 131 false 125 83{'Good'}

重新确定行的方向T1要成为新表的变量,T2.指定该姓氏可变的T1是的变量名称的源T2

T2=行2vars(T1,“VariableNamesSource”“姓”);

显示变量的前四个变量T2.的第一个变量T2包含的变量的名称T1.其余的变量T2对应于一行行T1

T2(:,1:4)
ans=9×4表史密斯OriginalVariableNames约翰逊威廉姆斯  ____________________________ ___________________________ _______________ _____________________________ {' 性别的}{‘男性’}{‘男性’}{‘女性’}{‘年龄’}{[38]}{[43]}{[38]}{“位置”}{县综合医院的}{VA医院的}{圣。玛丽的医学中心}{“高度”}{[71]}{[69]}{[64]}{“重量”}{[176]}{[163]}{[131]}{“烟民”}{[1]}{[0]}{[0]}{“收缩”}{[124]}{[109]}{[125]}{舒张的}{[93]}{[77]}{[83]}{‘SelfAssessedHealthStatus}{‘优秀’}{‘公平’}{‘好’}

在中显示数据T2.史密斯. 在本例中,的每个变量T2是一个9乘1的单元格数组,因为T1无法连接到数组中。

T2.史密斯
ans=9×1单元阵列男{[38]}{[71]}{[176]}{[1]}{[124]}{[93]}{[93]}{

将电子表格中的数据读入表格。使用电子表格的第一列作为表的行名称。显示前三行。

T1 = readtable (“patients.xls”“ReadRowNames”,真正的);头(T1, 3)
ans=3×9表UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两Uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu威廉姆斯{'Female'}38{'St.Mary's Medical Center'}64 131假125 83{'Good'}

从中重新定向指定的变量T1若要按名称指定数据变量,请使用字符向量的单元格数组。

T2=行2vars(T1,“DataVariables”,{“性别”“年龄”“高度”“重量”}); T2(:,1:4)
ans=4×4表本周的阿尔瓦瓦利门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门门{[163]}{[131]}

您还可以按输入表中的位置指定数据变量。若要指定变量的位置,请使用数字数组。

T3=行2可变值(T1,“DataVariables”六9],[1 2);T3 (: 1:4)
ans=6×4表史密斯OriginalVariableNames约翰逊威廉姆斯  ____________________________ _____________ ________ __________ {' 性别的}{‘男性’}{‘男性’}{‘女性’}{‘年龄’}{[38]}{[43]}{[38]}{“烟民”}{[1]}{[0]}{[0]}{“收缩”}{[124]}{[109]}{[125]}{舒张的}{[93]}{[77]}{[83]}{‘SelfAssessedHealthStatus}{‘优秀’}{‘公平’}{‘好’}

输入参数

全部折叠

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

名称-值对的观点

指定可选的逗号分隔的对名称,值论据。名称参数名和价值是对应的值。名称必须出现在引号内。可以以任意顺序指定多个名称和值对参数名称1,值1,…,名称,值

例子:“VariableNamegrule”和“preserve”保留从中获取的原始名称T1,不需要修改它们就可以成为有效的MATLAB®标识符。

可变的T1包含以逗号分隔的对指定的变量名,由“VariableNamesSource”以及字符向量、字符串标量、正整数或逻辑向量。的rows2vars函数解释的值“VariableNamesSource”如表所示。

的价值“VariableNamesSource”

意思

字符向量或字符串标量

输入表中变量的名称T1

整数n

n中的th变量T1

逻辑向量,其长度等于其中变量的数量T1

n元素是1符合事实的),对应于n第th变量T1.所有其他元素是0).

“VariableNamesSource”必须是指定表变量的名称、数字或逻辑数组,变量本身可以具有任何数据类型,具有这些限制。

  • 指定表变量中包含的值必须具有允许将值转换为字符串的数据类型。例如“VariableNamesSource”可以是包含日期时间数组,因为日期时间值可以转换为字符串。

  • 从指定的表变量获取的名称数量必须与输入表的行数匹配。

从中选择的变量T1,指定为逗号分隔的对,由“DataVariables”以及字符向量、字符向量的单元数组、字符串数组、正整数、正整数向量、逻辑向量或下标对象。这个rows2vars函数选择由的值指定的变量“DataVariables”并重新定位这些变量,使之成为行T2.其余的变量T1被丢弃。

变量命名规则T2,指定为逗号分隔的对,由“VariableNamingRule”或者这个值“修改”“保存”

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

的价值“VariableNamingRule”

规则

“修改”(默认)

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

“保存”

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

注:在某些情况下,rows2vars必须修改原始名称,即使在“保存”这是规则。此类情况包括:

  • 重复的名字

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

  • 与保留名称冲突的名称。

  • 长度超过的值namelengthmax

扩展能力

介绍了R2018a