主要内容

使用表格的优点

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

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

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

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

负载病人

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

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

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

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

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包含字段的struct数组:性别年龄吸烟者血压

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

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

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

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

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

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

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

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

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

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

T.Properties.RowNames = LastName;: 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

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

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双属性:单位:年数值:Min 25中位数39最大50吸烟者:100x1逻辑属性:描述:真或假值:真34假66血压:100x2双属性:描述:收缩压/舒张压值:第1列第2列________ ________最小109 68中位数122 81.5最大138 99

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

另请参阅

|

相关的话题