本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

table

具有命名变量的表数组(变量可包含不同类型的数据)

说明

table 数组存储列向数据或表格数据,例如文本文件或电子表格中的列。表将每一段列向数据存储在一个变量中。表变量可以具有不同的数据类型和大小,只要所有变量具有相同的行数即可。可以使用 summary 函数获取有关表的信息。

要对表进行索引,可以使用圆括号 () 返回子表,或者使用花括号 {} 提取内容。可以使用名称来引用变量和行。有关使用数值和名称进行索引的详细信息,请参阅访问表中的数据

创建对象

您可以使用 Import Toolreadtable 函数将文件中的数据读取到表中。也可以按如下所述,使用 table 函数根据现有的电子表格变量来创建一个表。

您也可以创建一个为变量预分配空间的表,以后再填充这些变量的值。要创建一个为变量预分配空间的表,请使用 table 函数并将 'Size' 作为第一个输入参数,如下所述。

说明

示例

T = table(var1,...,varN) 根据输入变量 var1,...,varN 创建表。变量的大小和数据类型可以不同,但所有变量的行数必须相同。

示例

T = table('Size',sz,'VariableTypes',varTypes) 创建一个表并为具有您指定的数据类型的变量预分配空间。sz 是二元素数值数组,其中 sz[1] 指定行数,sz[2] 指定变量数。varTypes 是用于指定数据类型的字符向量元胞数组。

示例

T = table(___,'VariableNames',varNames) 指定输出表中的变量的名称。您可以将此语法与此函数的任何其他语法的输入参数结合使用。

示例

T = table(___,'RowNames',rowNames) 指定输出表中的行的名称。您可以将此语法与前面任何语法中的输入参数结合使用。

示例

T = table 创建一个空的 0×0 表。

输入参数

全部展开

输入变量,指定为具有相同行数的数组。输入变量可以具有不同的大小和数据类型。

常见的输入变量为数值数组、逻辑数组、字符数组、结构体数组或元胞数组。输入变量也可以是数组对象。此类数组必须支持 var(index1,...,indexN) 形式的索引,其中 index1 为与变量 var 的行对应的数值或逻辑向量。此外,该数组还必须使用 dim 参数实现 vertcat 方法和 size 方法。

示例: table([1:4]',ones(4,3,2),eye(4,2)) 根据含有 4 行但大小不同的变量创建表。

示例: table([1:3]',{'one';'two';'three'},categorical({'A';'B';'C'})) 根据含有 3 行但数据类型不同的变量创建表。

预分配的表的大小,指定为二元素数值向量。sz 的第一个元素指定行数,第二个元素指定表变量的数量。

要仅创建变量而不包含任何行,请将 0 指定为 sz 的第一个元素。

示例: T = table('Size',[50 3],'VariableTypes',{'string','double','datetime'}) 为一个包含字符串数组、双精度数组和日期时间数组的表预分配 50 个行。

示例: T = table('Size',[0 4],'VariableTypes',varTypes) 指定零个行和四个变量。

预分配变量的数据类型,指定为字符向量元胞数组或字符串数组。由 varTypes 指定的类型的数量必须等于由 sz 的第二个元素指定的变量的数量。

varTypes 可以包含任何数据类型的名称,包括表中显示的名称。

数据类型名称

每个元素中的初始值

'double''single'

双精度或单精度 0

'doublenan', 'doubleNaN''singlenan', 'singleNaN'

双精度或单精度 NaN

'int8''int16''int32''int64'

有符号 8 位、16 位、32 位或 64 位整数 0

'uint8''uint16''uint32''uint64'

无符号 8 位、16 位、32 位或 64 位整数 0

'logical'

0 (false)

'categorical'

<undefined> 分类值

'datetime'

NaT 日期时间值

'duration'

0 秒,作为持续时间值

'calendarDuration'

0 天,作为日历持续时间值

'string'

""(不包含任何字符的 1×1 字符串)

'cellstr'

{''}(具有 0×0 字符数组的元胞)

'cell'

{[]}(具有 0×0 双精度数组的元胞)

'struct'

没有字段的标量结构体

'table'

没有变量的表

对于任何其他数据类型,初始值是该类型或类用于“填充”数组的未分配元素的值。

如果将 'char' 指定为数据类型,则 table 会将对应的变量预分配为字符向量元胞数组,而不是字符数组。最佳做法是避免创建字符数组形式的表或时间表变量。处理表或时间表中的文本数据时,请考虑使用字符串数组或分类数组。

输出表中的变量名称,指定为字符向量元胞数组或字符串数组。varNames 中的名称数量必须等于变量数量。

输出表中的行的名称,指定为字符向量元胞数组。rowNames 中的名称的数量必须等于行数。

示例: T = table([10;20;30],{'M';'F';'F'},'VariableNames',{'Age','Gender'},'RowNames',{'P1','P2','P3'}) 创建一个同时包含变量名称和行名称的表。

属性

全部展开

访问表元数据属性

表包含用于描述该表及其变量的元数据属性。使用语法 tableName.Properties.PropertyName 访问这些属性,其中 PropertyName 是属性的名称。例如,可以使用语法 T.Properties.VariableNames 访问表 T 中变量的名称。

您可以使用 tableName.Properties 语法返回所有元数据属性的摘要。

表通过 Properties 属性提供元数据访问,因为您可以使用圆点语法直接访问表数据。例如,如果表 T 具有名为 Var1 的变量,则您可以使用语法 T.Var1 以数组形式访问该变量。

表的元数据

维度名称,指定为二元素字符向量元胞数组或二元素字符串数组。

您可以使用这两个维度名称来访问表数据。如果表有行名称,并且您使用圆点语法和第一个维度名称,则可以将行名称作为向量来访问。如果使用圆点语法和第二个维度名称,则会将所有变量的数据串联在一个数组中,就像已使用 {:,:} 语法对时间表进行索引一样。

如果使用字符串数组指定此属性,则将其转换并存储为字符向量元胞数组。

示例

创建表并显示其维度名称。您可以结合使用圆点语法和维度名称来访问行名称和数据。

load patients
T = table(Age,Height,Weight,Systolic,Diastolic, ...
          'RowNames',LastName);
T.Properties.DimensionNames
ans = 1x2 cell array
    {'Row'}    {'Variables'}

使用第一个维度名称访问行名称。显示前五个名称。

T.Row(1:5)
ans = 5x1 cell array
    {'Smith'   }
    {'Johnson' }
    {'Williams'}
    {'Jones'   }
    {'Brown'   }

使用第二个维度名称访问数据。此语法等效于 T{:,:}

T.Variables
ans = 100×5

    38    71   176   124    93
    43    69   163   109    77
    38    64   131   125    83
    40    67   133   117    75
    49    64   119   122    80
    46    68   142   121    70
    33    64   142   130    88
    40    68   180   115    82
    28    68   183   115    78
    31    66   132   118    86
      ⋮

使用 Properties.DimensionNames 属性修改其维度的名称。更改维度名称后,可以分别使用语法 T.PatientT.Data 访问行时间和数据。

T.Properties.DimensionNames = {'Patient','Data'};
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Patient'  'Data'}
           VariableNames: {'Age'  'Height'  'Weight'  'Systolic'  'Diastolic'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {100x1 cell}
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

行名称,指定为字符向量元胞数组或字符串数组,其元素为非空且不同。如果 RowNames 不为空,则行名称数必须等于表中的行数。MATLAB® 会删除行名称中的任何前导或尾随空白。

查看表时,行名称是可见的。此外,您也可以在圆括号或花括号中使用行名称来访问表数据。

访问行名称的另一种方法是使用圆点语法和表的第一个维度的名称。

如果使用字符串数组指定此属性,则将其转换并存储为字符向量元胞数组。

示例

创建一个表。然后添加行名称并按名称访问行。

load patients
T = table(Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);

使用 Properties.RowNames 属性添加行名称。默认情况下,表没有行名称,但您可以随时添加它们。

T.Properties.RowNames = LastName;
head(T,4)
ans=4×7 table
                 Gender     Age    Height    Weight    Smoker    Systolic    Diastolic
                ________    ___    ______    ______    ______    ________    _________

    Smith       'Male'      38       71       176      true        124          93    
    Johnson     'Male'      43       69       163      false       109          77    
    Williams    'Female'    38       64       131      false       125          83    
    Jones       'Female'    40       67       133      false       117          75    

访问行名称的另一种方法是使用圆点语法和表的第一个维度的名称。显示前五个行名称。

T.Properties.DimensionNames
ans = 1x2 cell array
    {'Row'}    {'Variables'}

T.Row(1:5)
ans = 5x1 cell array
    {'Smith'   }
    {'Johnson' }
    {'Williams'}
    {'Jones'   }
    {'Brown'   }

按行名称对表进行索引。

T({'Smith','Williams'},:)
ans=2×7 table
                 Gender     Age    Height    Weight    Smoker    Systolic    Diastolic
                ________    ___    ______    ______    ______    ________    _________

    Smith       'Male'      38       71       176      true        124          93    
    Williams    'Female'    38       64       131      false       125          83    

表说明,指定为字符向量或字符串标量。使用 summary 函数时,此说明是可见的。

如果使用字符串标量指定此属性,则将其转换并存储为字符向量。

示例

创建一个表。修改表的描述。显示结果摘要。

load patients
T = table(Gender,Age,Height,Weight);
T.Properties.Description = 'Simulated patient data';
summary(T)
Description:  Simulated patient data

Variables:

    Gender: 100x1 cell array of character vectors

    Age: 100x1 double

        Values:

            Min        25  
            Median     39  
            Max        50  

    Height: 100x1 double

        Values:

            Min          60   
            Median       67   
            Max          72   

    Weight: 100x1 double

        Values:

            Min          111  
            Median     142.5  
            Max          202  

其他表信息,指定为数组。您可以使用此属性向表添加任何类型的数据。

示例

创建一个表。将匿名函数作为与表相关联的一段用户数据附加。

load patients
T = table(Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);
formula = @(x) x.^2;
T.Properties.UserData = formula;
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: @(x)x.^2
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x7 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

变量元数据

变量名称,指定为字符向量元胞数组或字符串数组,其元素为非空且不同。变量名称必须是有效的 MATLAB 标识符。您可以使用 isvarname 函数确定有效的变量名称。MATLAB 会删除变量名称中的任何前导或尾随空白。名称的数量必须等于变量数 。

如果未指定变量名称,或者指定了无效标识符,则 MATLAB 将指定 'Var1' ... 'VarN' 形式的变量名称,其中 N 是变量数量。

查看表和使用 summary 函数时,变量名称是可见的。此外,您也可以在圆括号、花括号中使用变量名称,或者将变量名称与点索引配合使用来访问表数据。

如果使用字符串数组指定此属性,则将其转换并存储为字符向量元胞数组。

示例

创建一个使用默认变量名称的表。然后使用 Properties.VariableNames 属性修改这些名称。

T = table({'M';'M';'F';'F';'F'},[38;43;38;40;49], ...
          [71;69;64;67;64],[176;163;131;133;119])
T=5×4 table
    Var1    Var2    Var3    Var4
    ____    ____    ____    ____

    'M'      38      71     176 
    'M'      43      69     163 
    'F'      38      64     131 
    'F'      40      67     133 
    'F'      49      64     119 

T.Properties.VariableNames = {'Gender','Age','Height','Weight'}
T=5×4 table
    Gender    Age    Height    Weight
    ______    ___    ______    ______

     'M'      38       71       176  
     'M'      43       69       163  
     'F'      38       64       131  
     'F'      40       67       133  
     'F'      49       64       119  

显示和修改变量的基本方法是使用圆点语法按名称访问它们。

T.Age
ans = 5×1

    38
    43
    38
    40
    49

T.Age(1) = 53
T=5×4 table
    Gender    Age    Height    Weight
    ______    ___    ______    ______

     'M'      53       71       176  
     'M'      43       69       163  
     'F'      38       64       131  
     'F'      40       67       133  
     'F'      49       64       119  

变量说明,指定为字符向量元胞数组或字符串数组。此属性可以是空元胞数组,这是默认值。如果数组不为空,则它必须包含与变量相同数量的元素。您可以为没有说明的变量指定单独的空字符向量或空字符串。

使用 summary 函数时,变量说明是可见的。

如果使用字符串数组指定此属性,则将其转换并存储为字符向量元胞数组。

示例

创建一个表。修改变量描述。显示结果摘要。

load patients
T = table(Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);
T.Properties.VariableDescriptions = {'','','','', ...
                                     'Has the patient ever been a smoker', ...
                                     'Systolic Pressure','Diastolic Pressure'};
summary(T)
Variables:

    Gender: 100x1 cell array of character vectors

    Age: 100x1 double

        Values:

            Min        25  
            Median     39  
            Max        50  

    Height: 100x1 double

        Values:

            Min          60   
            Median       67   
            Max          72   

    Weight: 100x1 double

        Values:

            Min          111  
            Median     142.5  
            Max          202  

    Smoker: 100x1 logical

        Properties:
            Description:  Has the patient ever been a smoker
        Values:

            True        34   
            False       66   

    Systolic: 100x1 double

        Properties:
            Description:  Systolic Pressure
        Values:

            Min          109    
            Median       122    
            Max          138    

    Diastolic: 100x1 double

        Properties:
            Description:  Diastolic Pressure
        Values:

            Min            68    
            Median       81.5    
            Max            99    

变量单位,指定为字符向量元胞数组或字符串数组。此属性可以为空元胞数组(默认值)。如果数组不为空,则它必须包含与变量相同数量的元素。您可以为没有单位的变量指定单独的空字符向量或空字符串。

使用 summary 函数时,变量单位是可见的。

如果使用字符串数组指定此属性,则将其转换并存储为字符向量元胞数组。

示例

创建一个表。修改变量单位。显示结果摘要。

load patients
T = table(Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);
T.Properties.VariableUnits = {'','Yrs','In','Lbs','','mm Hg','mm Hg'};
summary(T)
Variables:

    Gender: 100x1 cell array of character vectors

    Age: 100x1 double

        Properties:
            Units:  Yrs
        Values:

            Min        25  
            Median     39  
            Max        50  

    Height: 100x1 double

        Properties:
            Units:  In
        Values:

            Min          60   
            Median       67   
            Max          72   

    Weight: 100x1 double

        Properties:
            Units:  Lbs
        Values:

            Min          111  
            Median     142.5  
            Max          202  

    Smoker: 100x1 logical

        Values:

            True        34   
            False       66   

    Systolic: 100x1 double

        Properties:
            Units:  mm Hg
        Values:

            Min          109    
            Median       122    
            Max          138    

    Diastolic: 100x1 double

        Properties:
            Units:  mm Hg
        Values:

            Min            68    
            Median       81.5    
            Max            99    

自定义元数据

表的自定义元数据及其变量,指定为 CustomProperties 对象。

CustomProperties 对象是可以添加到表中的自定义元数据的容器。默认情况下,CustomProperties 的属性为零。添加到 CustomProperties 的每个属性都可以包含表元数据或变量元数据。如果属性包含变量元数据,则其值必须是数组,并且数组中的元素数必须等于表变量的数量。

  • 要将自定义元数据的属性添加到表中,请使用 addprop 函数。

  • 要访问或修改自定义元数据,请使用语法 tableName.Properties.CustomProperties.PropertyName。在此语法中,PropertyName 是使用 addprop 添加该属性时选择的名称。

  • 要删除属性,请使用 rmprop 函数。

注意:只能使用 addproprmprop 为自定义元数据添加或删除属性。您不能添加或删除 tableName.Properties 对象的属性。

示例

创建一个表。

load patients
T = table(Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);

添加可以保存有关表及其变量的自定义元数据的属性。在此示例中,元数据是仪器的名称,truefalse 值指示是否绘制变量,以及输出文件的名称。要添加属性,请使用 addprop 函数。

T = addprop(T,{'Instrument','ToPlot','OutputFile'},{'variable','variable','table'});
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x7 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}

   Custom Properties (access using t.Properties.CustomProperties.<name>):
              OutputFile: []
              Instrument: []
                  ToPlot: []

使用圆点语法将值赋给自定义元数据。将由文本值构成的数组赋给自定义元数据时,最佳做法是使用字符串数组,而不是字符向量元胞数组。如果 CustomProperties 的属性是字符向量元胞数组,则无法防止您以后将非文本值指定为元胞数组的元素。

T.Properties.CustomProperties.Instrument = ["","","height rod","scale","","blood pressure cuff","blood pressure cuff"];
T.Properties.CustomProperties.ToPlot = [false false true true false true true];
T.Properties.CustomProperties.OutputFile = 'patientData.csv';
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x7 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}

   Custom Properties (access using t.Properties.CustomProperties.<name>):
              OutputFile: 'patientData.csv'
              Instrument: [1x7 string]
                  ToPlot: [0 0 1 1 0 1 1]

T 中删除 OutputFile 属性。

T = rmprop(T,'OutputFile');
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x7 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}

   Custom Properties (access using t.Properties.CustomProperties.<name>):
              Instrument: [1x7 string]
                  ToPlot: [0 0 1 1 0 1 1]

示例

全部折叠

在表中存储关于一组患者的数据。您可以执行计算并将结果存储在同一个表中。您可以为表添加注释以对您的工作和表变量进行描述。

首先,创建包含患者数据的工作区变量。这些变量可以具有任何数据类型,但必须具有相同的行数。

LastName = {'Sanchez';'Johnson';'Li';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

创建一个表 T,作为工作区变量的容器。table 函数使用工作区变量名称作为 T 中表变量的名称。一个表变量可以有多个列。例如,T 中的 BloodPressure 变量是一个 5×2 数组。

T = table(LastName,Age,Smoker,Height,Weight,BloodPressure)
T=5×6 table
    LastName     Age    Smoker    Height    Weight    BloodPressure
    _________    ___    ______    ______    ______    _____________

    'Sanchez'    38     true        71       176       124     93  
    'Johnson'    43     false       69       163       109     77  
    'Li'         38     true        64       131       125     83  
    'Diaz'       40     false       67       133       117     75  
    'Brown'      49     true        64       119       122     80  

您可以使用点索引来访问表变量。例如,使用 T.Height 中的值计算患者的平均身高。

meanHeight = mean(T.Height)
meanHeight = 67

计算体重指数 (BMI),并将其添加为新的表变量。您还可以使用圆点语法在一个步骤中添加和命名表变量。

T.BMI = (T.Weight*0.453592)./(T.Height*0.0254).^2
T=5×7 table
    LastName     Age    Smoker    Height    Weight    BloodPressure     BMI  
    _________    ___    ______    ______    ______    _____________    ______

    'Sanchez'    38     true        71       176       124     93      24.547
    'Johnson'    43     false       69       163       109     77      24.071
    'Li'         38     true        64       131       125     83      22.486
    'Diaz'       40     false       67       133       117     75      20.831
    'Brown'      49     true        64       119       122     80      20.426

使用 BMI 计算的描述对表进行注释。您可以使用通过 T.Properties 访问的元数据来对 T 及其变量进行注释。

T.Properties.Description = 'Patient data, including body mass index (BMI) calculated using Height and Weight';
T.Properties
ans = 
  TableProperties with properties:

             Description: 'Patient data, including body mass index (BMI) calculated using Height and Weight'
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x7 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

使用表的第二个维度的名称,以矩阵形式访问表中的所有数据。

创建一个关于一组患者、包含五行数据的表。

Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

T = table(Age,Smoker,Height,Weight,BloodPressure)
T=5×5 table
    Age    Smoker    Height    Weight    BloodPressure
    ___    ______    ______    ______    _____________

    38     true        71       176       124     93  
    43     false       69       163       109     77  
    38     true        64       131       125     83  
    40     false       67       133       117     75  
    49     true        64       119       122     80  

使用 DimensionNames 属性显示表的维度名称。第二个维度的默认名称是 Variables

T.Properties.DimensionNames
ans = 1x2 cell array
    {'Row'}    {'Variables'}

使用语法 T.Variables 以矩阵形式访问表数据。此语法等同于使用花括号语法 T{:,:} 访问所有内容。如果表数据不能串联为一个矩阵,则会产生错误消息。

T.Variables
ans = 5×6

    38     1    71   176   124    93
    43     0    69   163   109    77
    38     1    64   131   125    83
    40     0    67   133   117    75
    49     1    64   119   122    80

重命名第二个维度。如果更改名称,则可以使用新名称访问数据。

T.Properties.DimensionNames{2} = 'PatientData';
T.PatientData
ans = 5×6

    38     1    71   176   124    93
    43     0    69   163   109    77
    38     1    64   131   125    83
    40     0    67   133   117    75
    49     1    64   119   122    80

通过指定表的大小和变量的数据类型来预分配一个表。table 函数使用适合于您指定的数据类型的默认值填充变量。它还会为变量提供默认名称,但您也可以自行指定变量名称。预分配可为稍后添加到表中的数据提供空间。

sz = [4 3];
varTypes = {'double','datetime','string'};
T = table('Size',sz,'VariableTypes',varTypes)
T=4×3 table
    Var1    Var2      Var3   
    ____    ____    _________

     0      NaT     <missing>
     0      NaT     <missing>
     0      NaT     <missing>
     0      NaT     <missing>

要为变量指定名称,请使用 'VariableNames' 名称-值对组参数。

varNames = {'Temperature','Time','Station'};
T2 = table('Size',sz,'VariableTypes',varTypes,'VariableNames',varNames)
T2=4×3 table
    Temperature    Time     Station 
    ___________    ____    _________

         0         NaT     <missing>
         0         NaT     <missing>
         0         NaT     <missing>
         0         NaT     <missing>

将数据行添加到 T2 的前两行。当您的代码一次性添加一行数据或几行数据时,可以使用预分配。使用预分配时,您可以填充已为数据预留空间的表变量,而不必在每次添加一行时表都随之增长。

T2(1,:) = {75,datetime('now'),"S1"};
T2(2,:) = {68,datetime('now')+1,"S2"}
T2=4×3 table
    Temperature            Time             Station 
    ___________    ____________________    _________

        75         03-Feb-2019 10:16:21    "S1"     
        68         04-Feb-2019 10:16:21    "S2"     
         0                          NaT    <missing>
         0                          NaT    <missing>

您可以将一行数据值封装在一个元胞数组中。当您从元胞数组中分配一行时,该元胞数组中的元素将分配到表中的行。

从数组创建一个表。要指定表变量名称,请使用 'VariableNames' 名称-值对组参数。例如,当其他输入参数不是工作区变量时,可以使用 'VariableNames' 指定名称。

T = table(categorical({'M';'F';'M'}),[45;32;34],...
          {'NY';'CA';'MA'},logical([1;0;0]),...
          'VariableNames',{'Gender','Age','State','Vote'})
T=3×4 table
    Gender    Age    State    Vote 
    ______    ___    _____    _____

      M       45     'NY'     true 
      F       32     'CA'     false
      M       34     'MA'     false

使用州名称作为行名称创建一个表。当使用 table 函数时,您可以同时指定 'VariableNames''RowNames' 名称-值对组。

T = table(categorical({'M';'F';'M'}),[45;32;34],logical([1;0;0]),...
          'VariableNames',{'Gender','Age','Vote'},...
          'RowNames',{'NY';'CA';'MA'})
T=3×3 table
          Gender    Age    Vote 
          ______    ___    _____

    NY      M       45     true 
    CA      F       32     false
    MA      M       34     false

指定表的行名称。表不必一定有行名称,但如果您指定了行名称,则可以按行名称对表进行索引。您还可以使用表的第一个维度的名称来访问一组行名称。

创建包含患者数据的数组。

LastName = {'Sanchez';'Johnson';'Lee';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];

创建包含这些数组的表。指定 LastName 作为该表的行名称的来源。该表只有三个变量。行名称不是表变量,而是表的属性。

T = table(Age,Weight,Height,'RowNames',LastName)
T=5×3 table
               Age    Weight    Height
               ___    ______    ______

    Sanchez    38      176        71  
    Johnson    43      163        69  
    Lee        38      131        64  
    Diaz       40      133        67  
    Brown      49      119        64  

由于行具有行名称,因此可以按名称对 T 的行进行索引。

T('Lee',:)
ans=1×3 table
           Age    Weight    Height
           ___    ______    ______

    Lee    38      131        64  

要指定多个行,请使用元胞数组。

T({'Lee','Brown'},:)
ans=2×3 table
             Age    Weight    Height
             ___    ______    ______

    Lee      38      131        64  
    Brown    49      119        64  

要以元胞数组形式访问 T 的所有行名称,请使用 T.Row 语法。默认情况下,Row 是表的第一个维度的名称。

T.Row
ans = 5x1 cell array
    {'Sanchez'}
    {'Johnson'}
    {'Lee'    }
    {'Diaz'   }
    {'Brown'  }

更改第一个维度的名称。如果更改名称,则可以使用新名称访问行名称。

T.Properties.DimensionNames{1} = 'LastNames';
T.LastNames
ans = 5x1 cell array
    {'Sanchez'}
    {'Johnson'}
    {'Lee'    }
    {'Diaz'   }
    {'Brown'  }

从 R2017a 开始,您可以使用双引号创建字符串,并将字符串数组添加为表变量。

FlightNum = [1261;547;3489];
Customer = ["Jones";"Brown";"Smith"];
Date = datetime(2016,12,20:22)';
Rating = categorical(["Good";"Poor";"Fair"]);
Comment = ["Flight left on time, not crowded";...
           "Late departure, ran out of dinner options";...
           "Late, but only by half an hour. Otherwise fine."];
T = table(FlightNum,Customer,Date,Rating,Comment)
T=3×5 table
    FlightNum    Customer       Date        Rating                         Comment                     
    _________    ________    ___________    ______    _________________________________________________

      1261       "Jones"     20-Dec-2016     Good     "Flight left on time, not crowded"               
       547       "Brown"     21-Dec-2016     Poor     "Late departure, ran out of dinner options"      
      3489       "Smith"     22-Dec-2016     Fair     "Late, but only by half an hour. Otherwise fine."

要使用字符串数组中的文本作为行名称,请将字符串数组转换为字符向量元胞数组。然后创建包含行名称的表。

Customer = cellstr(Customer);
T = table(FlightNum,Date,Rating,Comment,'RowNames',Customer)
T=3×4 table
             FlightNum       Date        Rating                         Comment                     
             _________    ___________    ______    _________________________________________________

    Jones      1261       20-Dec-2016     Good     "Flight left on time, not crowded"               
    Brown       547       21-Dec-2016     Poor     "Late departure, ran out of dinner options"      
    Smith      3489       22-Dec-2016     Fair     "Late, but only by half an hour. Otherwise fine."

创建工作区变量,其中包含三个地点的不同日期的降雪总量。这些变量都是行向量。

Date = {'12/25/11','1/2/12','1/23/12','2/7/12','2/15/12'};
location1 = [20 5 13 0 17];
location2 = [18 9 21 5 12];
location3 = [26 10 16 3 15];

要用这些变量创建表,一种方法是使用 T = table(Date',location1',location2',location3') 语法调用 table 函数。由于工作区变量是行向量,所以必须经过转置,才能作为列向数据放入表中。因此,输入参数应为表达式,而不是简单的变量。所以,table 将使用默认变量名称 Var1Var2Var3Var4 来创建 T。您可以在创建 T 后为 T.Properties.VariableNames 指定更有意义的名称。但是,更方便的方法可能是先创建一个空表,然后使用新名称逐一添加变量。

创建一个空表。转置工作区变量,然后将它们作为列向量添加到表中。在将每个工作区变量分配到 T 中的过程中,为表变量提供一个有意义的名称。

T = table;
T.Date = Date';
T.Natick = location1';
T.Boston = location2';
T.Worcester = location3'
T=5×4 table
       Date       Natick    Boston    Worcester
    __________    ______    ______    _________

    '12/25/11'      20        18         26    
    '1/2/12'         5         9         10    
    '1/23/12'       13        21         16    
    '2/7/12'         0         5          3    
    '2/15/12'       17        12         15    

局限性

  • 输入名称 'Size''VariableTypes''VariableNames''RowNames' 使用单引号。为了避免与变量输入混淆,对于这些名称,请不要使用双引号字符串标量(如 "Size")。

提示

  • 有关接受或返回表的函数列表,请参阅

扩展功能

在 R2013b 中推出