添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 说明
  • 创建对象
  • 属性
  • 示例
  • 局限性
  • 提示
  • 扩展功能
  • 版本历史记录
  • 另请参阅
  • 本页翻译不是最新的。点击此处可查看最新英文版本。

    table

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

    全页展开

    说明

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

    如果您的表格数据包含时间戳,请考虑使用 timetable 来存储和分析您的数据。

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

    创建对象

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

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

    描述

    示例

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

    如果输入是工作区变量,则 table 将输入名称指定为输出表中的变量名称。否则, table 将指定 'Var1',...,'Var N ' 形式的变量名称,其中 N 是变量的数量。

    示例

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

    示例

    T = table( ___ , Name,Value ) 使用一个或多个名称-值对组参数指定其他输入参数。例如,您可以使用 'VariableNames' 名称-值对组指定变量名称。您可将此语法与上述语法中的任何输入参数一起使用。

    示例

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

    输入参数

    全部展开

    预分配的表的大小,指定为二元素数值向量。 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 datetime

    'duration'

    0 秒,作为 duration

    'calendarDuration'

    0 天,作为 calendarDuration

    'string'

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

    'cellstr'

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

    'cell'

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

    'struct'

    没有字段的标量结构体

    'table'

    没有变量的表

    'timetable'

    没有变量的时间表,行时间为 NaT

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

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

    名称-值参数

    将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN ,其中 Name 是参数名称, Value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。

    在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

    示例: T = table(Age,Height,Weight,'RowNames',LastName) 创建一个包含由变量 LastName 指定的行名称的表。

    变量名称,指定为字符向量元胞数组或字符串数组,其元素为非空且不同。

    • 数组中的名称的数量必须等于时间表变量的数量。

    • table 函数还将变量名称存储在表的 VariableNames 属性中。

    • 变量名称可以包含任何 Unicode ® 字符,包括空格和非 ASCII 字符。

    示例: T = table(lat,lon,'VariableNames',["Latitude","Longitude"]) 基于输入数组 lat lon 创建一个表,并命名对应的表变量 Latitude Longitude

    行名称,指定为字符向量元胞数组或字符串数组,其元素为非空且不同。

    • 数组中的名称的数量必须等于行的数量。

    • table 函数还将行名称存储在表的 RowNames 属性中。

    • 行名称可以包含任何 Unicode 字符,包括空格和非 ASCII 字符。

    • table 函数从行名称中删除任何前导或尾部空白字符。

    示例: T = table(Age,Height,Weight,'RowNames',LastName) 创建一个包含由变量 LastName 指定的行名称的表。

    自 R2021a 开始提供

    维度名称,指定为二元素字符向量元胞数组或二元素字符串数组,其元素为非空且不同。

    • table 函数还将维度名称存储在表的 DimensionNames 属性中。

    • 维度名称可以包含任何 Unicode 字符,包括空格和非 ASCII 字符。

    在 R2021a 之前,只能通过设置 DimensionNames 属性来指定维度名称。

    示例: T = table(Age,Height,Weight,'RowNames',LastName,'DimensionNames',["PatientName","PatientData"]) 创建一个表,其中第一个维度的名称为 "PatientName" ,第二个维度的名称为 "PatientData"

    属性

    全部展开

    访问表元数据属性

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

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

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

    表的元数据

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

    • 维度名称可以包含任何 Unicode 字符,包括空格和非 ASCII 字符。

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

    您可以使用这两个维度名称来访问表数据。

    • 如果表有行名称,并且您使用圆点语法和第一个维度名称,则可以将行名称作为向量来访问。

    • 如果使用圆点语法和第二个维度名称,则会将所有变量的数据串联在一个数组中,就像已使用 {:,:} 语法对表进行索引一样。

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

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

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

    T.Row(1:5)
    ans = 5x1 cell
        {'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.Patient T.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 不为空,则行名称数必须等于表中的行数。

    • 行名称可以包含任何 Unicode 字符,包括空格和非 ASCII 字符。

    • 如果您分配的行名称包含前导或尾部空白字符,则 MATLAB ® 会将它们从行名称中删除。

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

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

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

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

    load patients
    T = table(Age,Height,Weight,Smoker,Systolic,Diastolic,SelfAssessedHealthStatus);
    T.SelfAssessedHealthStatus = string(SelfAssessedHealthStatus);

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

    T.Properties.RowNames = string(LastName);
    head(T,5)
                    Age    Height    Weight    Smoker    Systolic    Diastolic    SelfAssessedHealthStatus
                    ___    ______    ______    ______    ________    _________    ________________________
        Smith       38       71       176      true        124          93              "Excellent"       
        Johnson     43       69       163      false       109          77              "Fair"            
        Williams    38       64       131      false       125          83              "Good"            
        Jones       40       67       133      false       117          75              "Fair"            
        Brown       49       64       119      false       122          80              "Good"            
    

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

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

    按行名称对表进行索引。

    T(["Smith","Brown"],:)
    ans=2×7 table
                 Age    Height    Weight    Smoker    Systolic    Diastolic    SelfAssessedHealthStatus
                 ___    ______    ______    ______    ________    _________    ________________________
        Smith    38       71       176      true        124          93              "Excellent"       
        Brown    49       64       119      false       122          80              "Good"            
                        

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

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

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

    load patients
    T = table(LastName,Age,Height,Weight);
    T.LastName = string(T.LastName);
    T.Properties.Description = "Simulated patient data";
    summary(T)
    Description:  Simulated patient data
    Variables:
        LastName: 100x1 string
        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(LastName,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: {'LastName'  'Age'  'Height'  'Weight'  'Smoker'  'Systolic'  'Diastolic'}
        VariableDescriptions: {}
               VariableUnits: {}
          VariableContinuity: []
                    RowNames: {}
            CustomProperties: No custom properties are set.
          Use addprop and rmprop to modify CustomProperties.
                        

    变量元数据

    变量名称,指定为字符向量元胞数组或字符串数组,其元素为非空且不同。名称的数量必须等于变量数 。

    • 变量名称可以包含任何 Unicode 字符,包括空格和非 ASCII 字符。

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

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

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

    T = table(["Smith";"Nguyen";"Williams";"Fernandez";"Brown"],[38;43;38;40;49], ...
              [71;69;64;67;64],[176;163;131;133;119])
    T=5×4 table
           Var1        Var2    Var3    Var4
        ___________    ____    ____    ____
        "Smith"         38      71     176 
        "Nguyen"        43      69     163 
        "Williams"      38      64     131 
        "Fernandez"     40      67     133 
        "Brown"         49      64     119 
                                
    T.Properties.VariableNames = ["LastName","Age","Height","Weight"]
    T=5×4 table
         LastName      Age    Height    Weight
        ___________    ___    ______    ______
        "Smith"        38       71       176  
        "Nguyen"       43       69       163  
        "Williams"     38       64       131  
        "Fernandez"    40       67       133  
        "Brown"        49       64       119  
    

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

    T.Age
    ans = 5×1
    
    T.Age(1) = 53
    T=5×4 table
         LastName      Age    Height    Weight
        ___________    ___    ______    ______
        "Smith"        53       71       176  
        "Nguyen"       43       69       163  
        "Williams"     38       64       131  
        "Fernandez"    40       67       133  
        "Brown"        49       64       119  
                        

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

    • 使用 summary 函数时,变量描述是可见的。

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

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

    load patients
    T = table(LastName,Age,Height,Weight,Smoker,Systolic,Diastolic);
    T.LastName = string(T.LastName);
    T.Properties.VariableDescriptions = ["","","","", ...
                                         "Has the patient ever been a smoker", ...
                                         "Systolic Pressure","Diastolic Pressure"];
    summary(T)
    Variables:
        LastName: 100x1 string
        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(LastName,Age,Height,Weight,Smoker,Systolic,Diastolic);
    T.LastName = string(T.LastName);
    T.Properties.VariableUnits = ["","Yrs","In","Lbs","","mm Hg","mm Hg"];
    summary(T)
    Variables:
        LastName: 100x1 string
        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  
                        

    状态为连续或离散变量,指定为字符向量元胞数组或字符串数组。

    虽然表和时间表都有此属性,但只有时间表使用此属性。有关详细信息,请参阅 timetable VariableContinuity 属性。

    自定义元数据

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

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

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

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

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

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

    创建一个表。

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

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

    T = addprop(T,["Instrument","ToPlot","OutputFile"],["variable","variable","table"]);
    T.Properties
    ans = 
      TableProperties with properties:
                 Description: ''
                    UserData: []
              DimensionNames: {'Row'  'Variables'}
               VariableNames: {'LastName'  'Age'  'Height'  'Weight'  'Smoker'  'Systolic'  'Diastolic'}
        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: {'LastName'  'Age'  'Height'  'Weight'  'Smoker'  'Systolic'  'Diastolic'}
        VariableDescriptions: {}
               VariableUnits: {}
          VariableContinuity: []
                    RowNames: {}
       Custom Properties (access using t.Properties.CustomProperties.<name>):
                  OutputFile: 'patientData.csv'
                  Instrument: [""    ""    "height rod"    "scale"    ""    "blood pressure cuff"    "blood pressure cuff"]
                      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: {'LastName'  'Age'  'Height'  'Weight'  'Smoker'  'Systolic'  'Diastolic'}
        VariableDescriptions: {}
               VariableUnits: {}
          VariableContinuity: []
                    RowNames: {}
       Custom Properties (access using t.Properties.CustomProperties.<name>):
                  Instrument: [""    ""    "height rod"    "scale"    ""    "blood pressure cuff"    "blood pressure cuff"]
                      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: {'LastName'  'Age'  'Smoker'  'Height'  'Weight'  'BloodPressure'  'BMI'}
        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
        {'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         19-Aug-2023 13:08:37    "S1"     
            68         20-Aug-2023 13:08:37    "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
        {'Sanchez'}
        {'Johnson'}
        {'Lee'    }
        {'Diaz'   }
        {'Brown'  }
    

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

    T.Properties.DimensionNames{1} = 'LastNames';
    T.LastNames
    ans = 5x1 cell
        {'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 将使用默认变量名称 Var1 Var2 Var3 Var4 来创建 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    
    

    从 R2019b 开始,您可以指定不是有效的 MATLAB® 标识符的表变量名称。这种变量名称可以包括空格、非 ASCII 字符,并且可以有任何字符作为前导字符。当您访问这样的变量名称时,请用引号引起来。

    创建一个表,其中存储关于一组患者的数据。从患者年龄和是否为烟民开始。

    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)
    T=5×2 table
        Age    Smoker
        ___    ______
        38     true  
        43     false 
        38     true  
        40     false 
        49     true  
    

    添加变量名称为 '29-May-2019 Blood Pressure Reading' 的血压读数。您可以使用圆点语法添加或访问该变量。由于该变量名称不是有效的 MATLAB 标识符,使用圆点语法时需要加上括号和引号。

    T.('29-May-2019 Blood Pressure Reading') = BloodPressure
    T=5×3 table
        Age    Smoker    29-May-2019 Blood Pressure Reading
        ___    ______    __________________________________
        38     true                  124     93            
        43     false                 109     77            
        38     true                  125     83            
        40     false                 117     75            
        49     true                  122     80            
    

    在表变量名称是有效的 MATLAB 标识符时,使用圆点语法时不需要加上括号和引号。

    T.Height = Height;
    T.Weight = Weight
    T=5×5 table
        Age    Smoker    29-May-2019 Blood Pressure Reading    Height    Weight
        ___    ______    __________________________________    ______    ______
        38     true                  124     93                  71       176  
        43     false                 109     77                  69       163  
        38     true                  125     83                  64       131  
        40     false                 117     75                  67       133  
        49     true                  122     80                  64       119  
    

    使用变量名称对 T 进行索引。

    T(:,{'Age','Smoker','29-May-2019 Blood Pressure Reading'})
    ans=5×3 table
        Age    Smoker    29-May-2019 Blood Pressure Reading
        ___    ______    __________________________________
        38     true                  124     93            
        43     false                 109     77            
        38     true                  125     83            
        40     false                 117     75            
        49     true                  122     80            
    

    局限性

    • 对下列输入名称使用单引号:

      • 'DimensionNames' (从 R2021a 开始提供)

      • 'RowNames'

      • 'Size'

      • 'VariableTypes'

      • 'VariableNames'

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

    提示

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

    扩展功能

    基于线程的环境
    使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

    版本历史记录

    在 R2013b 中推出

    全部展开

    You clicked a link that corresponds to this MATLAB command:

    Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.