主要内容

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

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

按行标签排序

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

使用该时间表时间表函数。时间表沿着第一个维度有行时间,对行进行标记。行时间是时间表的属性,而不是时间表变量。

日期= datetime(2016 7(10、10、11;11;10;10;11;11]);X = [1; 1; 1; 1; 2; 2; 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'.这时间表函数在第一个输入参数之后命名行次数或第一个维度,就像它在其他输入参数之后命名时间表变量一样。

tt =时间表(日期,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的时间表Date X Y Z ___________ _ _____ _ 10-Jul-2016 1 {'a'} 1 10-Jul-2016 1 {'b'} 2 10-Jul-2016 2 {'a'} 5 10-Jul-2016 2 {'b'} 6 11-Jul-2016 1 {'a'} 3 11-Jul-2016 1 {'b'} 4 11-Jul-2016 2 {'a'} 7 11-Jul-2016 2 {'b'} 8

按数据变量排序XY排队种类上X首先,然后Y

sortrows (TT, {'X''是'})
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的时间表Date X Y Z ___________ _ _____ _ 10-Jul-2016 1 {'a'} 1 10-Jul-2016 1 {'b'} 2 10-Jul-2016 2 {'a'} 5 10-Jul-2016 2 {'b'} 6 11-Jul-2016 1 {'a'} 3 11-Jul-2016 1 {'b'} 4 11-Jul-2016 2 {'a'} 7 11-Jul-2016 2 {'b'} 8

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

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

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

创建两个患者数据表。表格可以沿其第一维,标记行,但不需要具有它们的行名称。将患者的姓氏指定为表的行名称。将患者的第一个名称添加为表变量。

({=表“迈克尔”'路易斯'“爱丽丝”'迷迭香'“朱莉”},[38; 43; 45; 40; 49],...“VariableNames”,{“FirstName”'年龄'},...“RowNames”,{“加西亚”“约翰逊”'吴'“琼斯”“皮卡”})
一个=5×2表名字年龄____________ ___ garcia {'michael'} 38 johnson {'louis'} 43 wu {'alice'} 45 jones {'roosemary'} 40皮卡卡德{'julie'} 49
({B =表“迈克尔”'贝弗利'“爱丽丝”},...(64; 69; 67),...[119; 163; 133],...[122 80;109 77;117 75],...“VariableNames”,{“FirstName”'高度''重量''血压'},...“RowNames”,{“加西亚”“约翰逊”'吴'})
B =3×4表名字高度重量血压___________ ______ _________________加西亚{迈克尔'} 64 119 122 80 johnson {'贝弗利'} 69 163 109 77吴{'Alice'} 67 133 117 117 75

如果表有行名称,则可以按行名称索引它。按行名称索引是选择表的行的便捷方式。索引进入B通过病人的姓氏检索有关病人的信息。

B (“加西亚”:)
ANS =.1×4表名字高度重量血压___________ ______ ______ ______________ garcia {'michael'} 64 119 122 80

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

C = innerjoin (A, B,“钥匙”,{“行”“FirstName”})
C =2×5表名字年龄高度重量血压____________________________________________________18 64 119 122 80吴{'ALICE'} 45 67 133 133 117 117 117 117 117 133 117 117 133 117 117 133 117 117 133 117 133 117 133 117 133 133 117 117 133 133 117 133 117 133 133 117 133 133 133 117 133 117 133 133 117 117 133 133 133 117 133 117 133 133 133

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

显示维度名称一个通过访问它属性。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表名字年龄高度重量血压____________________________________________________18 64 119 122 80吴{'ALICE'} 45 67 133 133 117 117 117 117 117 133 117 117 133 117 117 133 117 117 133 117 133 117 133 117 133 133 117 117 133 133 117 133 117 133 133 117 133 133 133 117 133 117 133 133 117 117 133 133 133 117 133 117 133 133 133

有关表函数和行标签的使用注意事项

  • 属性的行标签无法堆叠或反堆叠堆栈unstack功能。但是,可以使用行标签对变量进行分组。

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

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

另请参阅

|||||||