主要内容

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表LastName性别年龄身高体重  ____________ __________ ___ ______ ______ {' 史密斯的}{‘男性’}38 71 176{“约翰逊”}{‘男性’}43 69 163{威廉姆斯的}{‘女性’}38 64 131

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

T2 = Rows2Vars(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”、LastName);头(T3, 3)
ans =3×4表性别年龄身高体重__________ _________ ______ Smith{'男性'}38 71 176 Johnson{'男性'}43 69 163 Williams{'女性'}38 64 131

重新调整行T3.

T4 = rows2vars (T3);T4 (: 1:4)
ans =4×4表IndicalyVariaBlenames Smith Johnson威廉姆斯____________________________________________Height'} {[71]} {[64]} {[64]} {'权重'} {[176] {[163] {[131] {

载入一个时间表并显示它。

负载bostonTT波士顿
波士顿=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×7OriginalVariableNames x2016_06_0906_03_00 x2016_06_0912_00_23 x2016_06_0918_02_57 x2016_06_1006_01_47 x2016_06_1012_06_00 x2016_06_1018_02_57 _____________________ ___________________ ___________________ ___________________ ___________________ ___________________ ___________________ { '温度'} 59.5 63 61.7 55.4 62.3 58.8 { '风速'} 0.1 2.3 3.1 5.7 2.6 6.2 { '清除'} 0.05 0.08 0.13 0.15 0.87 0.33

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

载入一个时间表并显示它。

负载bostonTT波士顿
波士顿=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×7notionvariablenames 2016-06-09 06:03:00 2016-06-09 12:00:23 2016-06-09 18:02:57 2016-06-10 06:01:47 2016-06-10 12:06:002016-06-10 18:02:57 _____________________ ___________________ ___________________ ___________________ ___________________ ___________________ ___________________ {'Temp' } 59.5 63 61.7 55.4 62.3 58.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

变量名称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名字性别年龄所在地身高体重吸烟者心脏收缩舒张SelfAssessedHealthStatus ____________ __________ ___ _____________________________ ______ ______ ______ ________ _________ ________________________ { '史密斯'} { '男'} 38 { '县综合医院'} 71 176真正的124 93 { '优秀'} {”约翰逊'} {'male'} 43 {'va hospital'} 69 163 false 109 77 {'fair'} {'williams'} {'女性'} 38 {'St.玛丽的医疗中心'} 64 131 false 125 83 {'好'}

重新调整行T1.要成为新表的变量,T2..指定该变量的T1.的变量名的来源是T2.

T2 = rows2vars (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.Smith..在这个例子中,每个变量T2.是一个9乘1的单元格数组,因为T1.不能连接到数组中。

T2.Smith.
ans =9×1单元阵列{'male'} {[38]} {'entival hospital'} {[71]} {[176]} {[1]} {[94]}

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

T1 = readtable (“patients.xls”“ReadRowNames”,真正的);头(T1, 3)
ans =3×9表性别年龄所在地身高体重吸烟者心脏收缩舒张SelfAssessedHealthStatus __________ ___ _____________________________ ______ ______ ______ ________ _________ ________________________史密斯{ '男'} 38 { '县综合医院'} 71 176真正的124 93 { '优秀'}约翰逊{ '男'} 43 {'Va Hospital'} 69 163 False 109 77 {'Fair'}威廉姆斯{'女性'} 38 {'St.玛丽的医疗中心'} 64 131 false 125 83 {'好'}

重新定位指定的变量T1.并丢弃其余的。要按名称指定数据变量,请使用字符向量的单元格数组。

T2 = rows2vars (T1,“DataVariables”,{“性别”'年龄'“高度”“重量”});T2 (: 1:4)
ans =4×4表IndicalyVariaBlenames Smith Johnson威廉姆斯____________________________________________Height'} {[71]} {[64]} {[64]} {'权重'} {[176] {[163] {[131] {

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

t3 = Rows2vars(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}{‘优秀’}{‘公平’}{‘好’}

输入参数

全部折叠

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

名称-值参数

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

例子:“VariableNamingRule”,“保存”留下原始名称T1.,不需要修改它们就可以成为有效的MATLAB®标识符。

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

的价值“VariableNamesSource”

意义

字符矢量或字符串标量

输入表中的变量的名称T1.

整数n

n变量in.T1.

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

nth元素是1真的),对应于nTh变量T1..所有其他元素是0).

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

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

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

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

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

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

的价值“VariableNamingRule”

规则

“修改”(默认)

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

“保存”

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

笔记:在某些情况下,rows2vars即使在何时必须修改原始名称“保存”是规则。这种情况下包括:

  • 重复的名字

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

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

  • 长度超过的值namelengthmax

扩展功能

介绍了R2018a