主要内容

在表格和时间表操作中使用行标签

表和时间表提供了标记数据中的行的方法。在表中,可以用名称标记行。在时间表中,必须用日期、时间或两者同时标记行。对于表,行名是可选的,但对于时间表,行时间是必需的。这些行标签是表或时间表中元数据的一部分。在某些函数中,您还可以使用行标签作为关键变量、分组变量等等,就像您可以在表或时间表中使用数据变量一样。这些函数是sortrows加入innerjoinouterjoinvarfunrowfun堆栈,unstack.在使用这些表函数和使用行标签作为关键变量方面有一些限制。

按行标签排序

例如,您可以按时间表的行时间、一个或多个数据变量排序,或者同时按行时间和数据变量排序。

方法创建时间表时间表函数。时间表在其第一个维度上有行时间,标记行。行时间是时间表的一个属性,而不是时间表变量。

Date = datetime(2016,7,[10;10;11;11;10;10;11;11]);X = [1;1;1;1;2;2;Y = {“一个”“b”“一个”“b”“一个”“b”“一个”“b”};Z = [1;2;3;4;5;6;7;8];TT =时间表(X,Y,Z,“RowTimes”、日期)
TT =8×3的时间表时间X Y Z  ___________ _ _____ _ 自2016年7月10 - 1 {a} 1 10 - 7月- 2016年7月1 {b} 2 11 - 11 - 2016 1 {a} 3 - 7月- 2016年1 {b} 4 10 - 7月- 2016年2 {a} 5 10 - 7月11 - 2016 2 {b} 6 - 7月- 2016年2 {a} 7 11 - 7月- 2016年2 {b} 8

重命名第一个维度。默认情况下,时间表的第一个维度的名称为时间.您可以访问属性。DimensionNames属性重命名维度。

TT.Properties.DimensionNames{1} =“日期”;TT.Properties.DimensionNames
ans =1 x2单元格{‘日期’}{}“变量”

的第一个输入参数,可以指定行时间时间表,但没有说明“RowTimes”.的时间表函数在第一个输入参数之后命名行时间或第一个维度,就像它在其他输入参数之后命名时间表变量一样。

时间表(日期,X,Y,Z)
TT =8×3的时间表日期X Y Z  ___________ _ _____ _ 自2016年7月10 - 1 {a} 1 10 - 7月- 2016年7月1 {b} 2 11 - 11 - 2016 1 {a} 3 - 7月- 2016年1 {b} 4 10 - 7月- 2016年2 {a} 5 10 - 7月11 - 2016 2 {b} 6 - 7月- 2016年2 {a} 7 11 - 7月- 2016年2 {b} 8

按行时间对时间表进行排序。若要按行时间排序,请按名称引用时间表的第一个维度。

sortrows (TT,“日期”
ans =8×3的时间表日期X Y Z  ___________ _ _____ _ 自2016年7月10 - 1 {a} 1 10 - 7月- 2016年7月1 {b} 2 10 - 10 - 2016 2 {a} 5 - 7月- 2016年2 {b} 6自2016年7月11 - 1 {a} 3 11 - 7月11 - 2016 1 {b} 4 - 7月- 2016年2 {a} 7 11 - 7月- 2016年2 {b} 8

按数据变量排序X而且Ysortrows种类上X首先,然后是Y

sortrows (TT, {“X”“Y”})
ans =8×3的时间表日期X Y Z  ___________ _ _____ _ 自2016年7月10 - 1 {a} 1自2016年7月11 - 1 {a} 3 10 - 7月- 2016年7月1 {b} 2 11 - 10 - 2016 1 {b} 4 - 7月- 2016年2 {a} 5 11 - 7月- 2016年7月2 {a} 7 10 - 11 - 2016 2 {b} 6 - 7月- 2016年2 {b} 8

按行次数和排序X在一起。

sortrows (TT, {“日期”“X”})
ans =8×3的时间表日期X Y Z  ___________ _ _____ _ 自2016年7月10 - 1 {a} 1 10 - 7月- 2016年7月1 {b} 2 10 - 10 - 2016 2 {a} 5 - 7月- 2016年2 {b} 6自2016年7月11 - 1 {a} 3 11 - 7月11 - 2016 1 {b} 4 - 7月- 2016年2 {a} 7 11 - 7月- 2016年2 {b} 8

使用行标签作为分组或关键变量

属性将行分组在一起时rowfunvarfun堆栈,unstack函数时,可以将行标签指定为分组变量。控件将表或时间表连接在一起时加入innerjoin,outerjoin函数时,可以将行标签指定为关键变量。

例如,您可以使用行名和表变量作为关键变量,一起执行两个表的内部连接。内部连接只保留那些与关键变量相匹配的表行。

创建两个病人数据表。表可以在第一个维度上有行名,标记行,但并不要求必须有行名。指定病人的姓作为表的行名。添加患者的名字作为表变量。

A = table({“迈克尔”“路易”“爱丽丝”“迷迭香”“朱莉”},[38, 43岁,45,40;49),...“VariableNames”, {“FirstName”“年龄”},...“RowNames”, {“加西亚”“约翰逊”“吴”“琼斯”“皮卡”})
一个=5×2表姓名年龄____________ ___加西亚{'迈克尔'}38约翰逊{'路易斯'}43吴{'爱丽丝'}45琼斯{'罗斯玛丽'}40皮卡德{'朱莉'}49
B = table({“迈克尔”“贝弗利”“爱丽丝”},...(64; 69; 67),...(119; 163; 133),...(122 80;109 77;117 75),...“VariableNames”, {“FirstName”“高度”“重量”“血压”},...“RowNames”, {“加西亚”“约翰逊”“吴”})
B =3×4表名字身高体重血压___________ ____________ _____________加西亚{'迈克尔'}64 119 122 80约翰逊{'贝弗利'}69 163 109 77吴{'爱丽丝'}67 133 117 75

如果一个表有行名,那么您可以根据行名对其建立索引。按行名进行索引是选择表中的行的一种方便方法。索引B通过病人的姓来检索病人的信息。

B (“加西亚”:)
ans =1×4表FirstName身高体重血压  ___________ ______ ______ _____________ 加西亚{“迈克尔”}64 119 122 80

在这两个表上执行内部连接。这两个表都使用患者的姓氏作为行名,并包含名字作为表变量。两张表中有些病人的姓相同,但名不同。要确保姓和名都匹配,请使用行名和FirstName作为关键变量。若要将行名指定为键或分组变量,请使用表的第一个维度的名称。默认情况下,第一个维度的名称为“行”

C = innerjoin(A,B,“钥匙”, {“行”“FirstName”})
C =2×5表FirstName年龄身高体重血压  ___________ ___ ______ ______ _____________ 加西亚{“迈克尔”}38 64 119 122 80吴{“爱丽丝”}45 67 133 117 75

如果重命名表的第一个维度,则可以通过该名称引用行名,而不是使用“行”.执行与上面相同的内部连接,但是使用不同的名称来引用行名。

的维度名称一个通过访问属性。DimensionNames财产。

A.Properties.DimensionNames
ans =1 x2单元格{'行'}{}“变量”

使用的方法更改表的第一个维度的名称属性。DimensionNames财产。然后使用新名称作为关键变量。

A.Properties.DimensionNames{1} =“姓”;A.Properties.DimensionNames
ans =1 x2单元格{' LastName}{}“变量”

执行一个内部连接一个而且B使用而且FirstName作为关键变量。

B.Properties。DimensionNames {1} =“姓”;D = innerjoin(A,B,“钥匙”, {“姓”“FirstName”})
D =2×5表FirstName年龄身高体重血压  ___________ ___ ______ ______ _____________ 加西亚{“迈克尔”}38 64 119 122 80吴{“爱丽丝”}45 67 133 117 75

表函数和行标签的使用说明

  • 属性不能对行标签进行堆栈或解堆栈堆栈而且unstack功能。但是,您可以使用行标签作为分组变量。

  • 属性不能执行连接加入innerjoin,或outerjoin当第一个参数是表,第二个参数是时间表时,执行此函数。但是,当两个参数都是表、都是时间表,或者第一个参数是时间表,第二个参数是表时,可以执行连接。

  • 如果将行标签指定为关键变量,联接操作的输出可以具有行标签。有关连接操作中的行标签的详细信息,请参阅“钥匙”“LeftKeys”,“RightKeys”的论点加入innerjoin,outerjoin功能。

另请参阅

|||||||