表和时间表提供了在数据中标记行的方法。在表中,您可以使用名称标记行。在时间表中,您必须使用日期,时间或两者标记行。行名称是表的可选,但时间表需要行时间。这些行标签是表或时间表中元数据的一部分。在某些函数中,您还可以使用行标签作为键变量,分组变量等,就像您可以使用表或时间表中的数据变量一样。这些功能是排队
那加入
那内部联接
那外延
那varfun.
那Rowfun.
那堆
, 和un
。使用这些表函数以及使用行标签作为键变量存在一些限制。
例如,您可以在其行次数上对其中的一个或多个数据变量或行次数和数据变量一起对其行时的时间表进行排序。
使用该时间表时间表
功能。时间表沿其第一维度具有行时间,标记行。行时间是时间表的属性,而不是时间可变变量。
日期= 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时间表时间XyZ ___________ _ _____ _ 10-Jul-2016 1 {'a'} 1 10-Jul-2016 1 {'b'} 2 11-Jul-2016 1 {'a'} 3 11-Jul-2016 1 {'b'} 4 10-Jul-2016 2 {'a'} 5 10-Jul-2016 2 {'b'} 6 11-Jul-2016 2 {'a'} 7 11-Jul-2016 2 {'b'} 8
重命名第一个维度。默认情况下,时间表的第一个维度的名称是时间
。你可以访问properties.dimensionnames.
属性重命名维度。
tt.properties.dimensionnames {1} ='日期';tt.properties.dimensionnames.
ans =.1x2细胞{'日期'} {'变量'}
作为替代方案,您可以将行时间指定为第一个输入参数时间表
,没有指定'rowtimes'
。这时间表
函数名称行次数,或第一个维度,在第一个输入参数之后,就像它在另一个输入参数后命名的时间表变量一样。
tt =时间表(日期,x,y,z)
tt =8×3时间表Date X Y Z ___________ _ _____ _ 10-Jul-2016 1 {'a'} 1 10-Jul-2016 1 {'b'} 2 11-Jul-2016 1 {'a'} 3 11-Jul-2016 1 {'b'} 4 10-Jul-2016 2 {'a'} 5 10-Jul-2016 2 {'b'} 6 11-Jul-2016 2 {'a'} 7 11-Jul-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
按数据变量排序X
和y
。排队
排序X
首先,然后打开y
。
sortrows(tt,{'X''是'})
ans =.8×3时间表Date X Y Z ___________ _ _____ _ 10-Jul-2016 1 {'a'} 1 11-Jul-2016 1 {'a'} 3 10-Jul-2016 1 {'b'} 2 11-Jul-2016 1 {'b'} 4 10-Jul-2016 2 {'a'} 5 11-Jul-2016 2 {'a'} 7 10-Jul-2016 2 {'b'} 6 11-Jul-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.
那堆
, 和un
函数,您可以将行标签指定为分组变量。当您使用的时候加入表或时间表加入
那内部联接
, 和外延
函数,您可以将行标签指定为键变量。
例如,您可以使用行名称和表变量一起执行内部连接两个表作为键变量。内连接仅保留与关键变量匹配的那些表行。
创建两个患者数据表。表可以沿着其第一维,标记行,但不需要它们。将患者的姓氏指定为表的行名称。将患者的第一个名称添加为表变量。
a =表({'迈克尔';'路易斯';'爱丽丝';'迷迭香';'朱丽叶'},[38; 43; 45; 40; 49],......'variablenames',{'名''年龄'},......'rownames',{'加西亚''约翰逊''吴''琼斯''Picard'})
A =5×2表名字年龄____________ ___ garcia {'michael'} 38 johnson {'louis'} 43 wu {'alice'} 45 jones {'roosmary'} 40皮卡挞{'julie'} 49
b =表({'迈克尔';'贝弗利';'爱丽丝'},......[64; 69; 67],......[119; 163; 133],......[122 80;109 77;117 75],......'variablenames',{'名''高度''重量''血压'},......'rownames',{'加西亚''约翰逊''吴'})
B =3×4表名字高度重量血压___________ ______ _________________ garcia {迈克尔'} 64 119 122 80 johnson {'beverly'} 69 163 109 77吴{'Alice'} 67 133 117 117 75
如果表有行名称,则可以按行名称索引它。按行名称索引是选择表的行的便捷方式。索引进入B.
通过患者的姓氏来检索有关患者的信息。
B('加西亚',:)
ans =.1×4表名字高度重量血压___________ ______ ___________________ garcia {michael'} 64 119 122 80
在两个表上执行内部连接。这两个表都使用患者的最后一个名称作为行名称,并将名称包含为表变量。两个表中的一些患者已经匹配姓氏而是不同的名字。要确保持久和名字匹配,请使用行名称和名
作为关键变量。要将行名称指定为键或分组变量,请使用表的第一个维度的名称。默认情况下,第一个维度的名称是'排'
。
c = InnerJoin(A,B,'钥匙',{'排'那'名'})
C =2×5表名字年龄高度重量血压___________ ______________________________________________18 64 119 122 80吴{'ALICE'} 45 67 133 133 117 117 117 75
如果重命名表的第一个维度,那么您可以通过该名称而不是使用该名称的行名称'排'
。如上所述执行相同的内连接,但使用不同的名称来引用行名称。
显示维度名称一种
通过访问它properties.dimensionnames.
财产。
A.Properties.Dimensionnames.
ans =.1x2细胞{'行'} {'变量'}
使用其更改表的第一维度的名称properties.dimensionnames.
财产。然后使用新名称作为键变量。
A.Properties.dimensionnames {1} ='姓';A.Properties.Dimensionnames.
ans =.1x2细胞{'lastname'} {'变量'}
执行内部连接一种
和B.
使用姓
和名
作为关键变量。
B.Properties.Dimensionnames {1} ='姓';d = Innerjoin(A,B,'钥匙',{'姓'那'名'})
d =2×5表名字年龄高度重量血压___________ ______________________________________________18 64 119 122 80吴{'ALICE'} 45 67 133 133 117 117 117 75
您无法使用堆栈或删除行标签堆
和un
职能。但是,您可以使用行标签作为分组变量。
您无法使用使用的连接加入
那内部联接
, 或者外延
第一个参数是表的函数,第二个参数是时间表。但是,当两个参数都是表时,可以执行连接,两者都是时间表,或者第一个参数是时间表,第二个参数是一个表。
如果将行标签指定为键变量,则连接操作的输出可以具有行标签。有关来自加入操作的行标签的更多详细信息,请参阅文档'钥匙'
那'左边'
, 和'lightneys'
争论的论点加入
那内部联接
, 和外延
职能。