文档

使用表格的好处

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

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

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

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

负载病人

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

血压=[收缩压舒张压];性别=绝对的(性别);谁(“性别”“年龄”“抽烟”“血压”
名称大小字节类别属性年龄100x1 800双血压100x2 1600双性别100x1 346分类吸烟者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×4结构性别年龄吸烟者血压

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

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

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

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

ScalarStruct = struct(...“性别”{性别},...“年龄”、年龄、...“抽烟”,抽烟,...“血压”、血压)
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)
描述:模拟病人数据变量:性别:100 x1分类属性:描述:男性或女性价值观:女性53岁男性47年龄:100年x1双重性质:单位:年价值观:25分钟39马克斯50吸烟者中位数:100 x1逻辑属性:描述:真或假值:对34个错66血压:100 x2双重属性:描述:收缩压/舒张压值:BloodPressure_1 BloodPressure_2  _______________ _______________ 109 68 122 81.5最大中值138 99分钟

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

另请参阅

|

相关的话题