主要内容

使用表格的好处

方便地在单个容器中存储混合类型的数据

你可以使用表格数据类型,用于在单个容器中收集混合类型的数据和元数据属性,如变量名、行名、描述和变量单元。表适用于面向列或列表的数据,这些数据通常以列的形式存储在文本文件或电子表格中。例如,您可以使用表来存储实验数据,行表示不同的观察结果,列表示不同的测量变量。

表由面向行和面向列的变量组成。表中的每个变量可以有不同的数据类型和不同的大小,但每个变量必须具有相同的行数。

例如,加载样本患者数据。

负载病人

然后,结合工作空间变量,收缩压舒张压成一个单一的血压变量并转换工作区变量,性别,将字符向量单元格数组转换为分类数组。

血压=[收缩压舒张压];性别=分类(性别);谁(“性别”“年龄”“抽烟”“血压”
名称大小字节类属性年龄100x1 800双血压100x2 1600双性别100x1 330类别吸烟者100x1 100逻辑

的变量年龄血压性别,吸烟者具有不同的数据类型,它们都是存储在表中的候选者,因为它们都有相同的行数,100。

现在,根据变量创建一个表并显示前5行。

T =表(性别、年龄、吸烟、血压);: T (1:5)
ans =5×4表性别年龄吸烟者血压_________ ______ _____________男性38真124 93男43假109 77女38假125 83女40假117 75女49假122 80

表格以表格格式显示,变量名在顶部。

表中的每个变量都是单一的数据类型。如果向表中添加新行,MATLAB®会强制新数据与相应的表变量之间的数据类型保持一致。例如,如果您试图添加新患者的信息,其中第一列包含患者的年龄而不是性别,如表达式中所示T(end+1,:) = {37,{'Female'},true,[130 84]},则会收到错误:

对分类数组赋值的RHS无效。

错误发生的原因是MATLAB®不能分配数值数据,37,转换为分类数组,性别

为了比较表和结构,考虑结构数组,StructArray,这相当于表格,T

StructArray = table2struct (T)
StructArray =100×1带有字段的结构数组:性别年龄吸烟者血压

结构数组使用命名字段组织记录。每个字段的值可以有不同的数据类型或大小。现在,显示的第一个元素的命名字段StructArray

StructArray (1)
ans =结构体字段:性别:男性年龄:38吸烟者:1血压:[124 93]

结构数组中的字段类似于表中的变量。但是,与表不同的是,不能强制字段内的同质性。例如,你可以有S.Gender分类数组元素,男性,其他是字符向量,“男”“女”,以及其他整数,01

现在考虑相同的数据存储在标量结构,有四个字段,每个字段包含表中的一个变量。

ScalarStruct =结构(...“性别”{性别},...“年龄”、年龄、...“抽烟”,抽烟,...“血压”、血压)
ScalarStruct =结构体字段:性别:[100x1分类]年龄:[100x1 double]吸烟者:[100x1 logical]血压:[100x2 double]

与表格不同,不能强制数据为矩形。例如,字段ScalarStruct。年龄可以与其他字段的长度不同。

表允许维护矩形结构(如结构数组)并强制变量的同质性(如标量结构中的字段)。尽管单元格数组没有命名字段,但它们有许多与结构数组和标量结构相同的缺点。如果你有矩形数据,每个变量都是相同的,考虑使用表格。然后可以使用数字或命名索引,还可以使用表属性存储元数据。

使用数字或命名索引访问数据

可以使用圆括号、花括号或点索引来索引表。圆括号允许您选择表中数据的一个子集并保留表容器。花括号和点索引允许您从表中提取数据。在每个表索引方法中,您可以根据名称或数字索引指定要访问的行或变量。

考虑上面的示例表。表格中的每一行,T,代表不同的病人。工作空间变量,,包含100行的唯一标识符。属性将行名添加到表中RowNames财产并显示已更新表的前五行。

T.Properties.RowNames =姓;: T (1:5)
ans =5×4表性别年龄吸烟者血压_________ ______ _____________史密斯男性38真124 93约翰逊男性43假109 77威廉姆斯女性38假125 83琼斯女性40假117 75棕色女性49假122 80

除了标记数据之外,还可以使用行名和变量名访问表中的数据。例如,使用命名索引显示患者的年龄和血压威廉姆斯棕色(的)

T ({”威廉姆斯“棕色”},{“年龄”“血压”})
ans =2×2表年龄血压___ _____________威廉姆斯38 125 83布朗49 122 80

现在,使用数字索引来返回一个等价的子表。返回第二个和第四个变量的第三和第5行。

T (3:2:5 2:2:4)
ans =2×2表年龄血压___ _____________威廉姆斯38 125 83布朗49 122 80

对于单元格数组或结构,您没有使用命名或数字索引的相同灵活性。

  • 对于单元格数组,您必须使用比较字符串查找所需的已命名数据,然后可以在数组中建立索引。

  • 对于标量结构或结构数组,不能通过数字引用字段。此外,对于标量结构,您无法轻松地选择变量的子集或观察值的子集。使用结构数组,您可以选择观察值的子集,但不能选择变量的子集。

  • 对于表,您可以通过命名索引或数字索引访问数据。此外,您可以轻松地选择变量的子集和行的子集。

有关表索引的更多信息,请参见表格访问数据

使用表属性存储元数据

除了存储数据之外,表还具有存储元数据的属性,例如变量名、行名、描述和变量单元。您可以使用T.Properties.PropName,在那里T是桌名和PropName是表属性之一。

例如,为添加表描述、变量描述和变量单位年龄

T.Properties.Description =模拟病人数据的;T.Properties.VariableDescriptions =...男性或女性的......真或假的...收缩压/舒张压的};T.Properties.VariableUnits {“年龄”} =“年”

的单元格数组中的单个空字符向量VariableDescriptions表示对应的变量没有描述。有关的更多信息,请参见属性部分表格

要打印表格摘要,请使用总结函数。

总结(T)
描述:模拟患者数据变量:性别:100x1分类属性:描述:男性或女性值:女性53男性47年龄:100x1 double属性:单位:Yrs值:Min 25中位数39 Max 50吸烟者:100x1逻辑属性:描述:真或假值:真34假66血压:100x2 double属性:描述:收缩期/舒张期值:列1列2 ________ ________ Min 109 68中位122 81.5 Max 138 99

结构和单元格数组没有用于存储元数据的属性。

另请参阅

|

相关的话题