行索引

前面介绍了表和DataFrame中的列操作,与之对应的有行操作,接下来介绍行的增、删、改、查。行索引是与行查找有关的操作,包括单个行的索引、不连续多个行的索引和连续多个行的索引(即切片)。[大谦MATLAB,dqmatlab点com]

下面创建一个表T。

code.matlab
>> T=table({'张三';'李四';'杨二';'王五'},{'M';'F';'M';'F'},[18;19;17;25],...
    [162;169;164;167],...
    'VariableNames',{'Name' 'Gender' 'Age' 'Height'});

获取表T中的第1行。

code.matlab
>> T1=T(1,:)
T1 =
  1×4 table
      Name      Gender    Age    Height
    ________    ______    ___    ______
    {'张三'}    {'M'}     18      162

注意此时返回的是一个1行4列的子表。

也可以用第1行的名称进行索引,先给表T添加索引列。

code.matlab
>> T.Properties.RowNames={'1';'2';'3';'4'}
T =
  4×4 table
           Name      Gender    Age    Height
         ________    ______    ___    ______
    1    {'张三'}    {'M'}     18      162
    2    {'李四'}    {'F'}     19      169
    3    {'杨二'}    {'M'}     17      164
    4    {'王五'}    {'F'}     25      167

获取行名为“1”的行。

code.matlab
>> T2=T({'1'},:)
T2 =
  1×4 table
           Name      Gender    Age    Height
         ________    ______    ___    ______
    1    {'张三'}    {'M'}     18      162

对给定表的不连续多行进行索引,用普通数组指定不连续多行的编号。

下面获取表T中的第1行、第3行和第5行。

code.matlab
>> T3=T([1 3],:)
T3 =
  2×4 table
           Name      Gender    Age    Height
         ________    ______    ___    ______
    1    {'张三'}    {'M'}     18      162
    3    {'杨二'}    {'M'}     17      164

返回一个包含表T中第1行和第3行的子表。

也可以使用元胞数组,用不连续行的名称进行索引。下面用名称索引实现对表T中的第1行和第3行的索引。

code.matlab
>> T.Properties.RowNames={'1';'2';'3';'4'};
>> T4=T({'1','3'},:)
T4 =
  2×4 table
           Name      Gender    Age    Height
         ________    ______    ___    ______
    1    {'张三'}    {'M'}     18      162
    3    {'杨二'}    {'M'}     17      164

对表中的连续多行进行索引,使用类似m:n的形式指定连续多行,其中m和n分别为起始行号和终止行号。

下面对表T中的第1-3行进行索引。小括号中的冒号表示取所有列。

code.matlab
>> T5=T(1:3,:)
T5 =
  3×4 table
           Name      Gender    Age    Height
         ________    ______    ___    ______
    1    {'张三'}    {'M'}     18      162
    2    {'李四'}    {'F'}     19      169
    3    {'杨二'}    {'M'}     17      164

返回一个包含表T中第1-3行的子表。