# 在表和时间表运算中使用行标签

### 按行标签进行排序

```Date = datetime(2016,7,[10;10;11;11;10;10;11;11]); X = [1;1;1;1;2;2;2;2]; Y = {'a';'b';'a';'b';'a';'b';'a';'b'}; Z = [1;2;3;4;5;6;7;8]; TT = timetable(X,Y,Z,'RowTimes',Date)```
```TT=8×3 timetable Time 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 ```

```TT.Properties.DimensionNames{1} = 'Date'; TT.Properties.DimensionNames```
```ans = 1x2 cell {'Date'} {'Variables'} ```

`TT = timetable(Date,X,Y,Z)`
```TT=8×3 timetable 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,'Date')`
```ans=8×3 timetable 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 ```

`sortrows(TT,{'X' 'Y'})`
```ans=8×3 timetable 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 ```

`sortrows(TT,{'Date' 'X'})`
```ans=8×3 timetable 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 ```

### 将行标签用作分组变量或键变量

```A = table({'Michael';'Louis';'Alice';'Rosemary';'Julie'},[38;43;45;40;49],... 'VariableNames',{'FirstName' 'Age'},... 'RowNames',{'Garcia' 'Johnson' 'Wu' 'Jones' 'Picard'})```
```A=5×2 table FirstName Age ____________ ___ Garcia {'Michael' } 38 Johnson {'Louis' } 43 Wu {'Alice' } 45 Jones {'Rosemary'} 40 Picard {'Julie' } 49 ```
```B = table({'Michael';'Beverly';'Alice'},... [64;69;67],... [119;163;133],... [122 80; 109 77; 117 75],... 'VariableNames',{'FirstName' 'Height' 'Weight' 'BloodPressure'},... 'RowNames',{'Garcia' 'Johnson' 'Wu'})```
```B=3×4 table FirstName Height Weight BloodPressure ___________ ______ ______ _____________ Garcia {'Michael'} 64 119 122 80 Johnson {'Beverly'} 69 163 109 77 Wu {'Alice' } 67 133 117 75 ```

`B('Garcia',:)`
```ans=1×4 table FirstName Height Weight BloodPressure ___________ ______ ______ _____________ Garcia {'Michael'} 64 119 122 80 ```

`C = innerjoin(A,B,'Keys',{'Row','FirstName'})`
```C=2×5 table FirstName Age Height Weight BloodPressure ___________ ___ ______ ______ _____________ Garcia {'Michael'} 38 64 119 122 80 Wu {'Alice' } 45 67 133 117 75 ```

`A.Properties.DimensionNames`
```ans = 1x2 cell {'Row'} {'Variables'} ```

```A.Properties.DimensionNames{1} = 'LastName'; A.Properties.DimensionNames```
```ans = 1x2 cell {'LastName'} {'Variables'} ```

```B.Properties.DimensionNames{1} = 'LastName'; D = innerjoin(A,B,'Keys',{'LastName','FirstName'})```
```D=2×5 table FirstName Age Height Weight BloodPressure ___________ ___ ______ ______ _____________ Garcia {'Michael'} 38 64 119 122 80 Wu {'Alice' } 45 67 133 117 75 ```

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

• 您无法使用 `stack``unstack` 函数来堆叠或分叠行标签。但是，您可以使用行标签作为分组变量。

• 当第一个参数为表且第二个参数为时间表时，您无法使用 `join``innerjoin``outerjoin` 函数执行联接。但是，当两个参数都为表、两个参数都为时间表或第一个参数为时间表且第二个参数为表时，则可以执行联接。

• 如果您将行标签指定为键变量，则联接操作的输出可以包含行标签。有关联接操作中的行标签的详细信息，请参阅 `join``innerjoin``outerjoin` 函数的 `'Keys'``'LeftKeys'``'RightKeys'` 参数的相关文档。