主要内容

创建和使用表格

此示例演示如何从工作空间变量创建表、处理表数据以及将表写入文件以供以后使用。表格是一种数据类型,用于在单个容器中收集异构数据和元数据属性,如变量名、行名、描述和变量单元。

表适用于面向列或表格数据,这些数据通常以列的形式存储在文本文件或电子表格中。表中的每个变量可以具有不同的数据类型,但必须具有相同的行数。然而,表中的变量并不局限于列向量。例如,一个表变量可以包含一个有多个列的矩阵,只要它的行数与其他表变量相同。表的一个典型用途是存储实验数据,其中行表示不同的观察结果,列表示不同的测量变量。

表是收集和组织相关数据变量以及查看和汇总数据的方便容器。例如,您可以提取变量来执行计算,并方便地将结果作为新表变量添加。完成计算后,将表写入一个文件以保存结果。

创建和查看表

从工作区变量创建一个表并查看它。另外,使用导入工具或者是readtable函数从电子表格或文本文件创建表。当使用这些函数从文件导入数据时,每一列都成为表变量。

加载100例患者的样本数据病人mat文件到工作区变量。

负载病人
名称大小字节类别属性年龄100x1 800双舒张期100x1 800双性别100x1 11412 cell身高100x1 800双LastName 100x1 11616 cell位置100x1 14208 cell SelfAssessedHealthStatus 100x1 11540 cell吸烟者100x1 100逻辑收缩压100x1 800双体重100x1 800双

用包含患者数据的面向列变量填充表。可以通过名称访问和分配表变量。从工作空间变量分配表变量时,可以为表变量分配不同的名称。

创建一个表,并用性别吸烟者高度,重量工作空间变量。显示前五行。

T =表(性别、吸烟、身高、体重);: T (1:5)
ans =5×4表性别吸烟者身高体重__________ ______ ______ ______{'男'}真71 176{'男'}假69 163{'女'}假64 131{'女'}假67 133{'女'}假64 119

作为一种替代方法,请使用readtable函数从逗号分隔的文件中读取患者数据。readtable读取文件中的所有列。

通过读取文件中的所有列来创建一个表,patients.dat

T2 = readtable (“patients.dat”);: T2 (1:5)
ans =5×10表LastName性别年龄身高体重吸烟者收缩压舒张压SelfAssessedHealthStatus位置  ____________ __________ ___ _____________________________ ______ ______ ______ ________ _________ ________________________ {' 史密斯的38}{‘男性’}{县综合医院的}71 176 1 124 93{‘优秀’}{“约翰逊”}{‘男性’}43 {VA医院的}69 163 0 109 77{‘公平’}{威廉姆斯的}{‘女性’}38{圣。玛丽医疗中心'}64 131 0 125 83{'好'}{'琼斯'}{'女'}40{'弗吉尼亚州医院'}67 133 0 117 75{'公平'}{'布朗'}{'女'}49{'县总医院'}64 119 0 122 80{'好'}

你可以使用点表示法分配更多面向列的表变量,T.varname,在那里T是桌子和varname所需的变量名。创建随机数标识符。然后将它们分配给一个表变量,并命名该表变量ID。分配给表的所有变量必须具有相同的行数。的前五行显示T

e4,100 T.ID =兰迪(1,1);: T (1:5)
ans =5×5表性别吸烟者身高体重ID __________ ______ ______ __________{'男'}真71 176 8148{'男'}假69 163 9058{'女'}假64 131 1270{'女'}假67 133 9134{'女'}假64 119 6324

分配给表的所有变量必须具有相同的行数。

控件创建表摘要,以查看每个变量的数据类型、描述、单位和其他描述性统计信息总结函数。

总结(T)
变量:性别:100x1字符向量单元数组吸烟者:100x1逻辑值:True 34 False 66身高:100x1 double值:Min 60中位数67 Max 72体重:100x1 double值:Min 111中位数142.5 Max 202 ID: 100x1 double值:Min 120中位数5485.5 Max 9706

返回表的大小。

大小(T)
ans =1×2100年5

T包含100行和5个变量。

创建一个新的较小的表,其中包含的前五行T和显示。可以在圆括号内使用数字索引来指定行和变量。此方法类似于索引到数字数组以创建子数组。Tnew是一个5乘5的表格。

: Tnew = T (1:5)
Tnew =5×5表性别吸烟者身高体重ID __________ ______ ______ __________{'男'}真71 176 8148{'男'}假69 163 9058{'女'}假64 131 1270{'女'}假67 133 9134{'女'}假64 119 6324

的所有行创建一个更小的表Tnew从第二个到最后一个的变量。使用结束关键字来指示表的最后一个变量或最后一行。Tnew是一个5乘4的表格。

Tnew = Tnew(:, 2:结束)
Tnew =5×4表吸烟者身高体重ID ______ ______ ______ ____ true 71 176 8148假69 163 9058假64 131 1270假67 133 9134假64 119 6324

按行名和变量名访问数据

将行名添加到T并使用行名和变量名而不是数字索引索引到表中。属性来添加行名的工作区变量RowNames的属性T

T.Properties.RowNames =姓;

的前五行显示T行名称。

: T (1:5)
ans =5×5表性别吸烟者身高体重ID __________ ______ ______ __________史密斯{'男'}真71 176 8148约翰逊{'男'}假69 163 9058威廉姆斯{'女'}假64 131 1270琼斯{'女'}假67 133 9134布朗{'女'}假64 119 6324

返回的大小T。大小不会改变,因为在计算表的大小时不包括行名和变量名。

大小(T)
ans =1×2100年5

选择姓氏患者的所有数据“史密斯”而且“约翰逊”。在这种情况下,使用行名比使用数字索引更简单。Tnew是一个2乘5的表。

Tnew = T ({“史密斯”“约翰逊”},:)
Tnew =2×5表性别吸烟身高体重ID ________ ______ ______ ______ ____史密斯{'男'}真71 176 8148约翰逊{'男'}假69 163 9058

选择病人的身高和体重“约翰逊”通过对变量名建立索引。Tnew是一个1乘2的表。

Tnew = T (“约翰逊”,{“高度”“重量”})
Tnew =1×2表身高体重______ ______约翰逊69 163

您可以使用点语法访问表变量,例如T.Height,或通过命名索引,如T(:,“高度”)

计算并添加结果作为表变量

您可以访问表变量的内容,然后使用MATLAB®函数对它们执行计算。计算身体质量指数(身体质量指数)基于现有表变量中的数据,并将其作为一个新变量添加。绘制的关系身体质量指数病人是吸烟还是不吸烟。将血压读数添加到表格中,并绘制出血压与BMI的关系。

计算身体质量指数使用表变量,重量而且高度。您可以提取重量而且高度便于计算,同时便于保管重量高度,身体质量指数和其他病人的数据放在一起。的前五行显示T

T.BMI = (T.Weight * 0.453592)。/ (T.Height * 0.0254)。^ 2;: T (1:5)
ans =5×6表性别吸烟者身高体重ID BMI __________ ______ ______ __________ ______史密斯{'Male'}真71 176 8148 24.547约翰逊{'Male'}假69 163 9058 24.071威廉姆斯{'Female'}假64 131 1270 22.486琼斯{'Female'}假67 133 9134 20.831布朗{'Female'}假64 119 6324 20.426

的变量单位和变量描述属性身体质量指数。您可以向任何表变量添加元数据,以进一步描述变量中包含的数据。

T.Properties.VariableUnits {“身体质量指数”}=公斤/ m ^ 2的;T.Properties.VariableDescriptions {“身体质量指数”}=“身体质量指数”

创建一个直方图来探讨这组患者中吸烟和体重指数之间是否存在关系。你可以索引到身体质量指数的逻辑值吸烟者表变量,因为每一行包含身体质量指数而且吸烟者同一病人的价值。

tf = (t . smokers == false);h1 =直方图(T.BMI (tf),“BinMethod”“整数”);持有tf = (t .吸烟者== true);h2 =直方图(T.BMI (tf),“BinMethod”“整数”);包含(“BMI(公斤/ m ^ 2)”);ylabel (“患者”);传奇(“不吸烟”“烟民”);标题("吸烟者和非吸烟者的BMI分布");持有

图中包含一个坐标轴。标题为吸烟者和非吸烟者BMI分布的坐标轴包含两个类型直方图对象。这些物体代表不吸烟的人。

从工作空间变量中添加患者的血压读数收缩压而且舒张压。每行包含收缩压舒张压,身体质量指数同一病人的价值。

T.Systolic =收缩压;T.Diastolic =舒张压;

创建一个直方图来显示的高值之间是否有关系舒张压而且身体质量指数

tf = (T.BMI <= 25);h1 =直方图(T.Diastolic (tf),“BinMethod”“整数”);持有tf = (T.BMI > 25);h2 =直方图(T.Diastolic (tf),“BinMethod”“整数”);包含(“舒张压读数(mmhg)”);ylabel (“患者”);传奇(BMI < = 25的“体重指数> 25”);标题(“低和高BMI的舒张压读数”);持有

图中包含一个坐标轴。标题为“低和高BMI舒张压读数”的轴包含2个类型直方图对象。这些对象代表BMI <= 25, BMI > 25。

为输出重新排列表变量和行

要准备输出表,请按名称对表行重新排序,并按位置或名称对表变量重新排序。展示餐桌的最终布置。

按行名对表进行排序,以便按字母顺序列出患者。

T = sortrows (T)“RowNames”);: T (1:5)
ans =5×8表性别吸烟者身高体重ID BMI收缩压舒张压__________ ______ ______ __________ ______ ________ _________亚当斯{'女'}假66 137 8235 22.112 127 83亚历山大{'男'}真69 171 1300 25.252 128 99艾伦{'女'}假63 143 7432 25.331 113 80安德森{'女'}假68 128 1577 19.462 114 77贝利{'女'}假68 130 2239 19.766 113 81

创建一个血压变量将血压读数保存在一个100 × 2的表变量中。

T.BloodPressure = [T。收缩压T。舒张压];

删除收缩压而且舒张压从表中删除,因为它们是多余的。

T.Systolic = [];T.Diastolic = [];: T (1:5)
ans =5×7表性别吸烟者身高体重ID BMI血压__________ ____________ __________ ______ _____________亚当斯{'女'}假66 137 8235 22.112 127 83亚历山大{'男'}真69 171 1300 25.252 128 99艾伦{'女'}假63 143 7432 25.331 113 80安德森{'女'}假68 128 1577 19.462 114 77贝利{'女'}假68 130 2239 19.766 113 81

ID作为第一列,按位置对表变量重新排序。

T = T(:,[5 1:4 6 7]);: T (1:5)
ans =5×7表ID性别吸烟者身高体重BMI血压____ __________ ____________ ____________ _____________亚当斯8235{'女'}假66 137 22.112 127 83亚历山大1300{'男'}真69 171 25.252 128 99艾伦7432{'女'}假63 143 25.331 113 80安德森1577{'女'}假68 128 19.462 114 77贝利2239{'女'}假68 130 19.766 113 81

还可以按名称对表变量重新排序。对表变量进行重新排序性别最后:

  1. 找到“性别”VariableNames属性。

  2. 移动“性别”到变量名单元格数组的末尾。

  3. 使用名称单元格数组对表变量重新排序。

varnames = T.Properties.VariableNames;别人= ~ strcmp (“性别”, varnames);varnames = [varnames(别人)“性别”];T = T (:, varnames);

显示重新排序表的前五行。

: T (1:5)
ans =5×7表ID吸烟者身高体重BMI血压性别__________ ____________ ______ _____________ __________亚当斯8235假66 137 22.112 127 83{'女'}亚历山大1300真69 171 25.252 128 99{'男'}艾伦7432假63 143 25.331 113 80{'女'}安德森1577假68 128 19.462 114 77{'女'}贝利2239假68 130 19.766 113 81{'女'}

将表写入文件

可以将整个表写入文件,也可以创建子表,将原始表的选定部分写入单独的文件。

T的文件writetable函数。

writetable (T)“allPatientsBMI.txt”);

您可以使用readtable函数来读取数据allPatientsBMI.txt到一个新表中。

创建子表并将子表写入一个单独的文件。删除包含吸烟患者数据的行。然后删除吸烟者变量。不吸烟者仅包含非吸烟者的数据。

不吸烟者= T;删除=(不吸烟者。吸烟者= = true);不吸烟者(删除:)= [];不吸烟者。吸烟者= [];

不吸烟者到一个文件。

writetable(不抽烟,“nonsmokersBMI.txt”);

另请参阅

||||||||

相关的例子

更多关于